Partilhar via


MemberAttributes Enumeração

Definição

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
MemberAttributes
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 Shared.

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, Assemblyou 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.

Aplica-se a

Confira também