MemberAttributes Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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 |
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 overridable
zu 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
, , Assembly
oder Family
) besteht darin, Private
alle 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.