MemberAttributes Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Definiuje identyfikatory atrybutów składowych dla składowych klasy.
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
- Dziedziczenie
- Atrybuty
Pola
Abstract | 1 | Abstrakcyjny element członkowski. |
AccessMask | 61440 | Maska dostępu. |
Assembly | 4096 | Składowa, która jest dostępna dla dowolnej klasy w tym samym zestawie. |
Const | 5 | Stały element członkowski. |
Family | 12288 | Składowa, która jest dostępna w rodzinie jej klas i klas pochodnych. |
FamilyAndAssembly | 8192 | Składowa, która jest dostępna w ramach klasy i klasy pochodne w tym samym zestawie. |
FamilyOrAssembly | 16384 | Składowa, która jest dostępna w ramach klasy, jej klas pochodnych w dowolnym zestawie i dowolnej klasie w tym samym zestawie. |
Final | 2 | Składowa, której nie można zastąpić w klasie pochodnej. |
New | 16 | Nowy element członkowski. |
Overloaded | 256 | Przeciążony element członkowski. Niektóre języki, takie jak Visual Basic, wymagają jawnego wskazania przeciążonych elementów członkowskich. |
Override | 4 | Składowa, która zastępuje składową klasy bazowej. |
Private | 20480 | Prywatny element członkowski. |
Public | 24576 | Członek publiczny. |
ScopeMask | 15 | Maska zakresu. |
Static | 3 | Statyczny element członkowski. W języku Visual Basic jest to odpowiednik słowa kluczowego |
VTableMask | 240 | Maska VTable. |
Przykłady
Poniższy przykładowy kod demonstruje użycie elementu CodeMemberProperty , aby zdefiniować string
właściwość z elementami get
i set
metodami dostępu.
// 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
Uwagi
Identyfikatory zdefiniowane w wyliczenie MemberAttributes mogą służyć do wskazywania zakresu i atrybutów dostępu składowej klasy.
Uwaga
Virtual
Brak atrybutu elementu członkowskiego. Element członkowski jest zadeklarowany jako wirtualny, ustawiając dostęp do elementu członkowskiego do publicznej (property1.Attributes = MemberAttributes.Public
) bez określania go jako Końcowy. Brak flagi Final sprawia, że element członkowski virtual
w języku C# (public virtual
) overridable
w Visual Basic (Public Overridable
). Aby uniknąć deklarowania elementu członkowskiego jako virtual
lub overridable
, ustaw flagi Publiczne i Końcowe we Attributes właściwości . Zobacz właściwość , Attributes aby uzyskać więcej informacji na temat ustawiania atrybutów elementów członkowskich.
Uwaga
Wzorzec ustawiania flag dostępu (flag zawierających terminy Public
, Private
, Assembly
lub Family
) jest maskowanie wszystkich flag dostępu przy użyciu maski maski programu AccessMask, a następnie ustawienie żądanej flagi dostępu. Na przykład instrukcja kodu identyfikująca konstruktor (o nazwie constructor1
) jako publiczny to constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
. Attributes Ustawienie właściwości bezpośrednio na flagę dostępu (na przykład constructor1.Attributes = MemberAttributes.Public;
) powoduje wymazywanie wszystkich innych flag, które mogą być ustawione. Ten wzorzec powinien być również używany do ustawiania flag zakresu (Abstract, Final, Static, Override lub Const) przy użyciu maski Maska zakresu.