MemberAttributes Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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 |
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
, Assembly
nebo 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.