MemberAttributes Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет идентификаторы атрибутов члена для членов класса.
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
- Наследование
- Атрибуты
Поля
| Имя | Значение | Описание |
|---|---|---|
| Abstract | 1 | Абстрактный элемент. |
| Final | 2 | Элемент, который не может быть переопределен в производном классе. |
| Static | 3 | Статический элемент. В Visual Basic это эквивалентно ключевому слову |
| Override | 4 | Элемент, который переопределяет элемент базового класса. |
| Const | 5 | Постоянный член. |
| ScopeMask | 15 | Маска области. |
| New | 16 | Новый член. |
| VTableMask | 240 | Маска VTable. |
| Overloaded | 256 | Перегруженный элемент. Для некоторых языков, таких как Visual Basic, требуется явно указывать перегруженные элементы. |
| Assembly | 4096 | Член, доступный любому классу в одной сборке. |
| FamilyAndAssembly | 8192 | Член, доступный в его классе, и производные классы в той же сборке. |
| Family | 12288 | Член, доступный в семействе своего класса и производных классов. |
| FamilyOrAssembly | 16384 | Член, доступный в своем классе, производные классы в любой сборке и любой класс в одной сборке. |
| Private | 20480 | Частный член. |
| Public | 24576 | Общедоступный член. |
| AccessMask | 61440 | Маска доступа. |
Примеры
В следующем примере кода показано использование свойства CodeMemberPropertystring с get помощью методов доступа и set свойств.
// 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
Комментарии
Идентификаторы, определенные в MemberAttributes перечислении, можно использовать для указания области и атрибутов доступа члена класса.
Замечание
Атрибут элемента отсутствует Virtual . Член объявляется виртуальным путем задания доступа к члену общедоступного (property1.Attributes = MemberAttributes.Public) без указания его в качестве окончательного. Отсутствие конечного флага делает элемент virtual в C# (public virtual) overridable в Visual Basic (Public Overridable). Чтобы избежать объявления элемента как virtual или overridable, задайте флаги Public и Final в свойстве Attributes . Дополнительные сведения о настройке атрибутов элементов см. в Attributes свойстве.
Замечание
Шаблон настройки флагов доступа (флагов, содержащих терминыPublic, PrivateAssemblyилиFamily) заключается в том, чтобы маскировать все флаги доступа с помощью маски AccessMask, а затем задать нужный флаг доступа. Например, инструкция кода для идентификации конструктора (именованного constructor1) как общедоступная constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;.
Attributes Установка свойства непосредственно флагу доступа (например,constructor1.Attributes = MemberAttributes.Public;) удаляет все остальные флаги, которые могут быть заданы. Этот шаблон также следует использовать для задания флагов области (абстрактные, окончательные, статические, переопределения или const) с помощью маски ScopeMask.