MemberAttributes Enumeración

Definición

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
MemberAttributes
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 Shared.

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, Assemblyo 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.

Se aplica a

Consulte también