Compartir vía


Atributos personalizados que generan marcas o opciones en la salida del lenguaje intermedio (IL)

Agregue estos atributos al código para que el compilador emita un modificador de lenguaje intermedio (IL) especificado. Estos atributos indican al compilador que incluya el modificador IL correspondiente en la salida.

Atributo Modificador Comentarios
System.Runtime.InteropServices.ComImportAttribute import
System.Runtime.InteropServices.DllImportAttribute pinvokeimpl Puede agregar opciones enumeradas en el constructor.
System.Runtime.InteropServices.FieldOffsetAttribute .field Establece el desplazamiento de campo para la disposición de la memoria.
MarshalAsAttribute marshal Puede establecer opciones enumeradas en el constructor.
System.Runtime.CompilerServices.MethodImplAttribute flag Los argumentos del constructor especifican marcas con nombre específicas, como aggressiveinlining o forwardref. Estas marcas también especifican los modificadores native, managedo optil para el campo System.Runtime.CompilerServices.MethodCodeType.
System.NonSerializedAttribute notserialized
System.Runtime.InteropServices.OptionalAttribute [opt]
System.Runtime.InteropServices.PreserveSigAttribute preservesig
System.SerializableAttribute serializable
System.Runtime.InteropServices.StructLayoutAttribute auto, sequential o explicit Las opciones de diseño se pueden establecer mediante los parámetros .
System.Runtime.CompilerServices.IndexerNameAttribute Agregue este atributo a un indexador para establecer un nombre de método diferente. De forma predeterminada, los indexadores se compilan en una propiedad denominada Item. Puede especificar un nombre diferente mediante este atributo.

Algunos de estos atributos personalizados se aplican mediante otra sintaxis de C# en lugar de agregar el atributo al código fuente.

Atributo Comentarios
System.Runtime.InteropServices.DefaultParameterValueAttribute Especifica el valor predeterminado para el parámetro . Use la sintaxis de parámetro predeterminada .
System.Runtime.InteropServices.InAttribute Especifica el modificador [in] IL. Use los modificadores in o ref readonly.
System.Runtime.InteropServices.OutAttribute Especifica el modificador [out] IL. Use el modificador out.
System.Runtime.CompilerServices.SpecialNameAttribute Especifica el modificador specialname IL. El compilador agrega automáticamente este modificador para los métodos que lo requieren.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Este atributo es necesario para la característica de delegate*. El compilador lo agrega a cualquier delegate* que requiera su uso. Sin embargo, debe agregar este atributo a cualquier declaración de método cuando ese método se asigna a un puntero de función.

Por lo general, los atributos siguientes no se permiten en el origen de C#. Se enumeran aquí para ayudar a los autores de bibliotecas que utilizan la reflexión, y para asegurarse de que no se crean atributos personalizados con el mismo nombre completo.

Atributo Comentarios
System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute Impide que los compiladores de nivel inferior usen metadatos que no puedan comprender de forma segura.
System.Runtime.CompilerServices.DecimalConstantAttribute Codifica campos const decimal. El runtime no admite valores decimal como constantes.
System.Reflection.DefaultMemberAttribute Codifica los indexadores con System.Runtime.CompilerServices.IndexerNameAttribute. Este atributo indica el indexador predeterminado cuando su nombre es diferente de Item. Este atributo se permite en el origen.
System.Runtime.CompilerServices.DynamicAttribute Codifica si un tipo de una firma es dynamic (frente a object).
System.Runtime.CompilerServices.ExtensionAttribute Este atributo señala los métodos de extensión. El compilador también coloca este atributo en las clases contenedoras.
System.Runtime.CompilerServices.FixedBufferAttribute Este atributo especifica los campos de la estructura fixed.
System.Runtime.CompilerServices.IsByRefLikeAttribute Este atributo especifica una estructura de ref.
System.Runtime.CompilerServices.IsReadOnlyAttribute Este atributo indica que un parámetro tiene el modificador in. Distingue parámetros in de readonly ref o [In] ref.
System.Runtime.CompilerServices.RequiresLocationAttribute Este atributo indica que un parámetro tiene el modificador readonly ref. Distingue readonly ref de in o [In] ref.
System.Runtime.CompilerServices.IsUnmanagedAttribute Este atributo especifica la restricción unmanaged en un parámetro de tipo.
System.Runtime.CompilerServices.NullableAttribute, System.Runtime.CompilerServices.NullableContextAttribute, System.Runtime.CompilerServices.NullablePublicOnlyAttribute Estos atributos codifican anotaciones anulables en su código fuente.
System.ParamArrayAttribute Este atributo codifica el modificador params en los parámetros de matriz.
System.Runtime.CompilerServices.ParamCollectionAttribute Este atributo codifica el modificador params en parámetros que no son de matriz.
System.Runtime.CompilerServices.RefSafetyRulesAttribute Este atributo especifica la versión de C# necesaria para comprender las anotaciones de seguridad ref en el ensamblado. Las reglas de seguridad ref evolucionan a medida que C# obtiene nuevas características.
System.Runtime.CompilerServices.RequiredMemberAttribute Este atributo indica que el modificador required se ha colocado en una declaración de miembro. Es la codificación de los miembros requeridos del lenguaje característico .
System.Runtime.CompilerServices.TupleElementNamesAttribute Este atributo codifica nombres de elementos de tupla utilizados en firmas.

Además, el compilador puede generar una declaración para otros atributos usados internamente. El compilador genera estos atributos en el espacio de nombres System.Runtime.CompilerServices para su propio uso. Algunas no están en las bibliotecas en tiempo de ejecución de .NET. En su lugar, el compilador sintetiza una definición para una declaración de tipo internal en cualquier ensamblado en el que se necesite el atributo.