Udostępnij za pośrednictwem


MemberAttributes Wyliczenie

Definicja

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

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

Dotyczy

Zobacz też