Come ottenere gli attributi su un campo di riferimento
-
19-09-2019 - |
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.
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