2010-03-28 7 views
24

Il mio metodo si presenta come:come ottenere il nome della classe quando sto passando un generico nel mio metodo?

public string DoObjectProperties<T>(T obj, string text) 
{ 

} 

Ora dall'interno del metodo, ho bisogno di ottenere il valore stringa del nome della classe che mi passa nel parametro 'obj' del metodo.

Quindi, se passo l'oggetto Utente, ho bisogno del testo "utente".

Per ottenere le proprietà che sto usando: typeof(T).GetProperties()

Come posso ottenere il nome classi?

risposta

47

Basta usare .Name come questo:

typeof(T).Name 

Questo dà ad esempio "String", c'è anche .FullName che darebbe "System.String"

1
typeof(T).Name //would work 

Ma a seconda di esso e prendere decisioni basate su di esso probabilmente non è una buona idea.

La regola importante qui è che probabilmente si dovrebbe usare FullName quando possibile.

Ad esempio in istruzioni switch case o in if else blocks o in keys keys.

Il nome della classe non è la cosa ideale da cui dipendere poichè è possibile che lo abbia lo stesso nome di classe in spazi dei nomi diversi. NamespaceA.String and NamespaceB.String è perfettamente possibile ...

Problemi correlati