MemberAttributes Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Define los identificadores de atributos de miembro para miembros de clase.
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
- Herencia
- Atributos
Campos
Abstract | 1 | Miembro abstracto. |
AccessMask | 61440 | Máscara de acceso. |
Assembly | 4096 | Un miembro que es accesible a cualquier clase dentro del mismo ensamblado. |
Const | 5 | Miembro constante. |
Family | 12288 | Un miembro que es accesible dentro de la familia de su clase y clases derivadas. |
FamilyAndAssembly | 8192 | Un miembro que es accesible dentro de su clase y de las clases derivadas en el mismo ensamblado. |
FamilyOrAssembly | 16384 | Un miembro que es accesible dentro de su clase, sus clases derivadas en cualquier ensamblado y cualquier clase en el mismo ensamblado. |
Final | 2 | Un miembro que no puede reemplazarse en una clase derivada. |
New | 16 | Nuevo miembro. |
Overloaded | 256 | Miembro sobrecargado. En algunos lenguajes, como Visual Basic, requieren que los miembros sobrecargados estén indicados de forma explícita. |
Override | 4 | Un miembro que reemplaza un miembro de clase base. |
Private | 20480 | Miembro privado. |
Public | 24576 | Miembro público. |
ScopeMask | 15 | Máscara de ámbito. |
Static | 3 | Miembro estático. En Visual Basic, esto es equivalente a la palabra clave |
VTableMask | 240 | Máscara de VTable. |
Ejemplos
En el código de ejemplo siguiente se muestra el uso de para CodeMemberProperty definir una string
propiedad con get
descriptores de acceso y 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
Comentarios
Los identificadores definidos en la MemberAttributes enumeración se pueden usar para indicar el ámbito y los atributos de acceso de un miembro de clase.
Nota
No hay ningún Virtual
atributo de miembro. Un miembro se declara virtual estableciendo su acceso de miembro a Public (property1.Attributes = MemberAttributes.Public
) sin especificarlo como Final. La ausencia de la marca Final convierte un miembro virtual
en C# (public virtual
), overridable
en Visual Basic (Public Overridable
). Para evitar declarar el miembro como virtual
o overridable
, establezca las marcas Public y Final en la Attributes propiedad . Consulte la Attributes propiedad para obtener más información sobre cómo establecer atributos de miembro.
Nota
El patrón para establecer las marcas de acceso (marcas que contienen los términos Public
, Private
, Assembly
o Family
) es enmascarar todas las marcas de acceso mediante la máscara AccessMask y, a continuación, establecer la marca de acceso deseada. Por ejemplo, la instrucción de código para identificar un constructor (denominado constructor1
) como público es constructor1.Attributes = (constructor1.Attributes & ~MemberAttributes.AccessMask) | MemberAttributes.Public;
. Al establecer la Attributes propiedad directamente en una marca de acceso (por ejemplo, constructor1.Attributes = MemberAttributes.Public;
), se borran todas las demás marcas que se pueden establecer. Este patrón también se debe usar para establecer las marcas de ámbito (Abstract, Final, Static, Override o Const) mediante la máscara ScopeMask.