MemberAttributes Enumerazione

Definizione

Definisce gli identificatori degli attributi dei membri per i membri della 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
Ereditarietà
MemberAttributes
Attributi

Campi

Abstract 1

Membro astratto.

AccessMask 61440

Maschera di accesso.

Assembly 4096

Membro accessibile a qualsiasi classe all'interno dello stesso assembly.

Const 5

Membro costante.

Family 12288

Membro accessibile all'interno della famiglia della propria classe e delle classi derivate.

FamilyAndAssembly 8192

Membro accessibile all'interno della propria classe e delle classi derivate nello stesso assembly.

FamilyOrAssembly 16384

Membro accessibile all'interno della propria classe, delle classi derivate in qualsiasi assembly e di qualsiasi classe nello stesso assembly.

Final 2

Membro che non può essere sottoposto a override in una classe derivata.

New 16

Nuovo membro.

Overloaded 256

Membro di overload. In alcuni linguaggi, come Visual Basic, è necessario indicare in modo esplicito i membri di overload.

Override 4

Membro che esegue l'override di un membro di classe base.

Private 20480

Membro privato.

Public 24576

Membro pubblico.

ScopeMask 15

Maschera di ambito.

Static 3

Membro statico. In Visual Basic, è equivalente alla parola chiave Shared.

VTableMask 240

Maschera VTable.

Esempio

Il codice di esempio seguente illustra l'uso di CodeMemberProperty per definire una proprietà con le funzioni di accesso e string get 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

Commenti

Gli identificatori definiti nell'enumerazione possono essere usati per indicare l'ambito e gli attributi MemberAttributes di accesso di un membro di classe.

Nota

Non è presente alcun Virtual attributo membro. Un membro viene dichiarato virtuale impostandone l'accesso al membro su Public ( ) senza property1.Attributes = MemberAttributes.Public specificarlo come Final. L'assenza del flag Final rende membro virtual in C# ( public virtual ), in Visual Basic ( overridable Public Overridable ). Per evitare di dichiarare il membro come o , impostare entrambi i virtual flag Public e Final nella proprietà overridable Attributes . Per altre Attributes informazioni sull'impostazione degli attributi dei membri, vedere la proprietà .

Nota

Il modello per l'impostazione dei flag di accesso (flag contenenti i termini , , o ) è mascherare tutti i flag di accesso usando la Public Private maschera Assembly AccessMask e quindi impostare il flag di Family accesso desiderato. Ad esempio, l'istruzione di codice per identificare un costruttore (denominato constructor1 ) come pubblico è constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public; . L'impostazione della proprietà direttamente su un flag di accesso ,ad esempio , cancella tutti gli altri Attributes flag che possono essere constructor1.Attributes = MemberAttributes.Public; impostati. Questo modello deve essere usato anche per impostare i flag di ambito (Abstract, Final, Static, Override o Const) usando la maschera ScopeMask.

Si applica a

Vedi anche