Sdílet prostřednictvím


MemberAttributes Výčet

Definice

Definuje identifikátory atributů členů pro členy třídy.

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
Dědičnost
MemberAttributes
Atributy

Pole

Abstract 1

Abstraktní člen.

AccessMask 61440

Maska přístupu.

Assembly 4096

Člen, který je přístupný pro libovolnou třídu v rámci stejného sestavení.

Const 5

Konstantní člen.

Family 12288

Člen, který je přístupný v rámci rodiny jeho třídy a odvozené třídy.

FamilyAndAssembly 8192

Člen, který je přístupný v rámci své třídy a odvozené třídy ve stejném sestavení.

FamilyOrAssembly 16384

Člen, který je přístupný v rámci své třídy, odvozené třídy v libovolném sestavení a jakékoli třídy ve stejném sestavení.

Final 2

Člen, který nelze přepsat v odvozené třídě.

New 16

Nový člen.

Overloaded 256

Přetížený člen. Některé jazyky, například Visual Basic, vyžadují explicitní označení přetížených členů.

Override 4

Člen, který přepíše člen základní třídy.

Private 20480

Soukromý člen.

Public 24576

Veřejný člen.

ScopeMask 15

Maska oboru.

Static 3

Statický člen. V jazyce Visual Basic je to ekvivalent klíčového Shared slova .

VTableMask 240

Maska tabulky VTable.

Příklady

Následující příklad kódu ukazuje použití objektu CodeMemberProperty k definování string vlastnosti s get objekty a 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

Poznámky

Identifikátory definované ve výčtu MemberAttributes lze použít k označení atributů oboru a přístupu člena třídy.

Poznámka

Neexistuje žádný Virtual atribut členu. Člen je deklarován jako virtuální nastavením přístupu ke svému členu na Veřejný (property1.Attributes = MemberAttributes.Public), aniž by byl zadán jako konečný. Absence příznaku Final dělá člena virtual v jazyce C# (public virtual), overridable v jazyce Visual Basic (Public Overridable). Pokud se chcete vyhnout deklarování člena jako virtual nebo overridable, nastavte ve Attributes vlastnosti příznak Public i Final. Další informace o nastavení atributů členů najdete ve Attributes vlastnosti .

Poznámka

Vzor pro nastavení příznaků přístupu (příznaky obsahující termíny Public, Private, Assemblynebo Family) spočívá v maskování všech příznaků přístupu pomocí masky AccessMask a následné nastavení požadovaného příznaku přístupu. Například příkaz kódu pro identifikaci konstruktoru (s názvem constructor1) jako veřejný je constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;. Attributes Nastavení vlastnosti přímo na příznak přístupu (například ) vymaže všechny ostatní příznaky, constructor1.Attributes = MemberAttributes.Public;které by mohly být nastaveny. Tento vzor by se měl použít také k nastavení příznaků oboru (Abstract, Final, Static, Override nebo Const) pomocí masky ScopeMask.

Platí pro

Viz také