MemberAttributes Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define os identificadores de atributo de membro para membros de classe.
public enum class MemberAttributes
public enum MemberAttributes
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public enum MemberAttributes
type MemberAttributes =
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type MemberAttributes =
Public Enum MemberAttributes
- Herança
- Atributos
Campos
Abstract | 1 | Um membro abstrato. |
AccessMask | 61440 | Uma máscara de acesso. |
Assembly | 4096 | Um membro que é acessível a qualquer classe dentro do mesmo assembly. |
Const | 5 | Um membro constante. |
Family | 12288 | Um membro que é acessível dentro da família de sua classe e classes derivadas. |
FamilyAndAssembly | 8192 | Um membro que é acessível dentro de sua classe e classes derivadas no mesmo assembly. |
FamilyOrAssembly | 16384 | Um membro que é acessível dentro de sua classe, suas classes derivadas em qualquer assembly e qualquer classe no mesmo assembly. |
Final | 2 | Um membro que não pode ser substituído em uma classe derivada. |
New | 16 | Um novo membro. |
Overloaded | 256 | Um membro sobrecarregado. Algumas linguagens, como Visual Basic, exigem que os membros sobrecarregados sejam indicados explicitamente. |
Override | 4 | Um membro que substitui um membro da classe base. |
Private | 20480 | Um membro privado. |
Public | 24576 | Um membro público. |
ScopeMask | 15 | Uma máscara de escopo. |
Static | 3 | Um membro estático. No Visual Basic, isso é equivalente à palavra-chave |
VTableMask | 240 | Uma máscara VTable. |
Exemplos
O código de exemplo a seguir demonstra o uso de um CodeMemberProperty para definir uma string
propriedade com get
acessadores e set
.
// Declares a property of type String named StringProperty.
CodeMemberProperty^ property1 = gcnew CodeMemberProperty;
property1->Name = "StringProperty";
property1->Type = gcnew CodeTypeReference( "System.String" );
property1->Attributes = MemberAttributes::Public;
property1->GetStatements->Add( gcnew CodeMethodReturnStatement( gcnew CodeFieldReferenceExpression( gcnew CodeThisReferenceExpression,"testStringField" ) ) );
property1->SetStatements->Add( gcnew CodeAssignStatement( gcnew CodeFieldReferenceExpression( gcnew CodeThisReferenceExpression,"testStringField" ),gcnew CodePropertySetValueReferenceExpression ) );
// A C# code generator produces the following source code for the preceeding example code:
// public virtual string StringProperty
// {
// get
// {
// return this.testStringField;
// }
// set
// {
// this.testStringField = value;
// }
// }
// Declares a property of type String named StringProperty.
CodeMemberProperty property1 = new CodeMemberProperty();
property1.Name = "StringProperty";
property1.Type = new CodeTypeReference("System.String");
property1.Attributes = MemberAttributes.Public;
property1.GetStatements.Add( new CodeMethodReturnStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "testStringField") ) );
property1.SetStatements.Add( new CodeAssignStatement( new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "testStringField"), new CodePropertySetValueReferenceExpression()));
// A C# code generator produces the following source code for the preceeding example code:
// public virtual string StringProperty
// {
// get
// {
// return this.testStringField;
// }
// set
// {
// this.testStringField = value;
// }
// }
' Declares a property of type String named StringProperty.
Dim property1 As New CodeMemberProperty()
property1.Name = "StringProperty"
property1.Type = New CodeTypeReference("System.String")
property1.Attributes = MemberAttributes.Public
property1.GetStatements.Add(New CodeMethodReturnStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression(), "testStringField")))
property1.SetStatements.Add(New CodeAssignStatement(New CodeFieldReferenceExpression(New CodeThisReferenceExpression(), "testStringField"), New CodePropertySetValueReferenceExpression()))
' A Visual Basic code generator produces the following source code for the preceeding example code:
' Public Overridable Property StringProperty() As String
' Get
' Return Me.testStringField
' End Get
' Set(ByVal Value As String)
' Me.testStringField = value
' End Set
' End Property
Comentários
Os identificadores definidos na MemberAttributes enumeração podem ser usados para indicar o escopo e os atributos de acesso de um membro de classe.
Observação
Não há nenhum Virtual
atributo de membro. Um membro é declarado virtual definindo seu acesso de membro como Público (property1.Attributes = MemberAttributes.Public
) sem especificá-lo como Final. A ausência do sinalizador Final torna um membro virtual
em C# (public virtual
), overridable
no Visual Basic (Public Overridable
). Para evitar declarar o membro como virtual
ou overridable
, defina os sinalizadores Público e Final na Attributes propriedade . Consulte a Attributes propriedade para obter mais informações sobre como definir atributos de membro.
Observação
O padrão para definir os sinalizadores de acesso (sinalizadores que contêm os termos Public
, Private
, Assembly
ou Family
) é mascarar todos os sinalizadores de acesso usando a máscara AccessMask e, em seguida, definir o sinalizador de acesso desejado. Por exemplo, a instrução de código para identificar um construtor (chamado constructor1
) como público é constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
. Definir a Attributes propriedade diretamente como um sinalizador de acesso (por exemplo, constructor1.Attributes = MemberAttributes.Public;
) apaga todos os outros sinalizadores que podem ser definidos. Esse padrão também deve ser usado para definir os sinalizadores de escopo (Abstract, Final, Static, Override ou Const) usando a máscara ScopeMask.