MemberAttributes Enumeration

Definition

Definiert Bezeichner für Memberattribute von Klassenmembern.

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
Vererbung
MemberAttributes
Attribute

Felder

Abstract 1

Ein abstrakter Member.

AccessMask 61440

Eine Zugriffsmaske.

Assembly 4096

Ein Member, auf den alle Klassen in der gleichen Assembly zugreifen können.

Const 5

Ein konstanter Member.

Family 12288

Ein Member, auf den aus der Familie seiner Klasse und abgeleiteter Klassen zugegriffen werden kann.

FamilyAndAssembly 8192

Ein Member, auf den aus seiner Klasse und aus abgeleiteten Klassen in der gleichen Assembly zugegriffen werden kann.

FamilyOrAssembly 16384

Ein Member, auf den aus seiner Klasse, aus abgeleiteten Klassen in einer beliebigen Assembly und aus allen Klassen in der gleichen Assembly zugegriffen werden kann.

Final 2

Ein Member, der in einer abgeleiteten Klasse nicht überschrieben werden kann.

New 16

Ein new-Member.

Overloaded 256

Ein überladener Member. Bei einigen Sprachen wie Visual Basic müssen überladene Member explizit angegeben werden.

Override 4

Ein Member, der einen Basisklassenmember überschreibt.

Private 20480

Ein private-Member.

Public 24576

Ein public-Member.

ScopeMask 15

Eine Gültigkeitsbereichsmaske.

Static 3

Ein statischer Member. Dies entspricht dem Shared-Schlüsselwort in Visual Basic.

VTableMask 240

Eine VTable-Maske.

Beispiele

Der folgende Beispielcode veranschaulicht die Verwendung eines CodeMemberProperty , um eine string Eigenschaft mit get und set -Accessoren zu definieren.

// 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

Hinweise

Die in der MemberAttributes Enumeration definierten Bezeichner können verwendet werden, um den Bereich und die Zugriffsattribute eines Klassenmembers anzugeben.

Hinweis

Es gibt kein Virtual Member-Attribut. Ein Member wird als virtual deklariert, indem der Memberzugriff auf Öffentlich (property1.Attributes = MemberAttributes.Public) festgelegt wird, ohne es als Endgültig anzugeben. Das Fehlen des Final-Flags macht ein Mitglied virtual in C# (public virtual), overridable in Visual Basic (Public Overridable). Um das Deklarieren des Members als virtual oder overridablezu vermeiden, legen Sie in der -Eigenschaft sowohl das Public- als auch das Attributes Final-Flag fest. Weitere Informationen zum Festlegen von Memberattributen finden Sie in der Attributes -Eigenschaft.

Hinweis

Das Muster zum Festlegen der Zugriffsflags (Flags mit den Begriffen Public, , Assemblyoder Family) besteht darin, Privatealle Zugriffsflags mithilfe der AccessMask-Maske zu maskieren und dann das gewünschte Zugriffsflaggen festzulegen. Beispielsweise ist constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;die Code-Anweisung, um einen Konstruktor (mit dem Namen constructor1) als öffentlich zu identifizieren. Durch direktes Festlegen der Attributes Eigenschaft auf ein Zugriffsflag (z. constructor1.Attributes = MemberAttributes.Public;B. ) werden alle anderen Flags gelöscht, die möglicherweise festgelegt werden. Dieses Muster sollte auch zum Festlegen der Bereichsflags (Abstract, Final, Static, Override oder Const) mithilfe der ScopeMask-Maske verwendet werden.

Gilt für:

Weitere Informationen