MemberAttributes 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义类成员的成员特性标识符。
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 | 抽象成员。 |
AccessMask | 61440 | 访问屏蔽。 |
Assembly | 4096 | 在同一程序集中任何类都可以访问的成员。 |
Const | 5 | 常数成员。 |
Family | 12288 | 可以在其类以及其派生类家族内访问的成员。 |
FamilyAndAssembly | 8192 | 可以在其类以及其在同一程序集中的派生类中访问的成员。 |
FamilyOrAssembly | 16384 | 可以在其类、其在任何程序集中的派生类以及在同一程序集的任何类中均访问的成员。 |
Final | 2 | 在派生类中不能重写的成员。 |
New | 16 | 新成员。 |
Overloaded | 256 | 重载成员。 某些语言(如 Visual Basic)要求显式指示重载成员。 |
Override | 4 | 重写基类成员的成员。 |
Private | 20480 | 私有成员。 |
Public | 24576 | 公共成员。 |
ScopeMask | 15 | 范围屏蔽。 |
Static | 3 | 静态成员。 在 Visual Basic 中,这等效于 |
VTableMask | 240 | VTable 屏蔽。 |
示例
以下示例代码演示如何使用 CodeMemberProperty 定义 string
具有 get
和 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
注解
枚举中 MemberAttributes 定义的标识符可用于指示类成员的范围和访问属性。
注意
没有 Virtual
成员属性。 通过将成员对公共 (property1.Attributes = MemberAttributes.Public
) 的成员访问权限设置为“最终”来声明为虚拟成员。 缺少 Final 标志会使 virtual
C# (public virtual
) 中的 overridable
Visual Basic (Public Overridable
) 的成员。 为了避免将成员声明为 virtual
或 overridable
,请在 属性中 Attributes 设置 Public 和 Final 标志。 有关设置成员属性的详细信息, Attributes 请参阅 属性。
注意
设置访问标志 (包含术语 Public
、 Private
、 Assembly
或 Family
) 的标志的模式是使用 AccessMask 掩码屏蔽所有访问标志,然后设置所需的访问标志。 例如,用于将名为 constructor1
) 的构造函数标识为 public 的构造函数 (的代码语句是 constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
。 例如,将 Attributes 属性直接设置为访问标志 (, constructor1.Attributes = MemberAttributes.Public;
) 会擦除可能设置的所有其他标志。 此模式还应该用于使用 ScopeMask 掩码设置范围标志 (Abstract、Final、Static、Override 或 Const) 。