Pregunta

No puedo encontrar "campo" que aparece como C # palabra clave en cualquier lugar. ¿Alguien sabe el fondo en esta?

¿Fue útil?

Solución

El compilador de C # por lo general no tiene problemas para averiguar qué parte de una declaración del atributo se aplica a. Se me ocurren tres casos en los que es posible utilizarlo:

  1. Los atributos que se aplican a la asamblea. Muy visible en AssemblyInfo.cs
  2. Un atributo aplicado al valor de retorno de una declaración P / Invoke, [retorno: MarshalAs]
  3. Tener el atributo se aplica a la variable respaldo de una propiedad o un evento sin descriptores de acceso. Su caso.

Otros consejos

Esto es necesario, por ejemplo, si se está marcando un evento como no serializable. En él se especifica el objetivo de que el atributo se aplica a.

Es parte de la sintaxis objetivo atributo. Desde el :

attribute-target:
    field
    event
    method
    param
    property
    return
    type

Véase también la documentación de NonSerializedAttribute :

  

Para aplicar la clase NonSerializedAttribute a un evento, establecer la ubicación de atributo para el campo, como se muestra en el siguiente código C #.

     

[field:NonSerializedAttribute()]

     

public event ChangedEventHandler Changed;

Esto es para que pueda configurar atributo NonSerialized en los campos, esto es útil en la serialización de los acontecimientos.

Por ejemplo esto le daría un error de compilación

[NonSerialized]
public event SomeEventHandler SomeEvent;

Para solucionar este problema, tiene que usar field:

[field:NonSerialized]
public event SomeEventHandler SomeEvent;

Más información sobre este aquí - Delegados y serialización

El NonSerializedAttribute sólo es aplicable a los campos, se puede usar de la siguiente manera:

[NonSerialized]
public string myString;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top