Domanda

Ho una domanda: C'è un modo elegante di ottenere attributi su un campo di riferimento. Vale a dire:.

public class C1: Base
{
    [MyAttribute]
    public string Field1;
}
public class Base
{
    private void Do(ref string field)
    {
          if (field has attributes)
              DoSomething();
    }
} 

Come posso ottenere gli attributi di un campo nel metodo Do ()?

Grazie in anticipo.

È stato utile?

Soluzione

Non c'è modo si può fare con la firma ref string field. Gli attributi vengono applicati alle dichiarazioni (campi, classi, eventi ecc), non "istanze".

Quello che possono fare, è modificare il vostro metodo come questo:

private void Do(Type fieldContainingType, string fieldName, ref string field)

e quindi utilizzare la riflessione per ispezionare fieldContainingType a vedere, quali attributi vengono applicati al campo denominato fieldName. Questo approccio, tuttavia, è estremamente fragile e generalmente molto male.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top