Ho ottenuto un'interfaccia generica come questa:Ottieni il tipo di un'interfaccia generica?
public interface IResourceDataType<T>
{
void SetResourceValue(T resValue);
}
Poi ho avuto questa classe che implementa la mia interfaccia:
public class MyFont : IResourceDataType<System.Drawing.Font>
{
//Ctor + SetResourceValue + ...
}
E finalmente ho ottenuto un:
var MyType = typeof(MyFont);
I, ora , vuoi ottenere il tipo System.Drawing.Font
da MyType! Al momento, ho ottenuto questo codice:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
//If test is OK
}
Ma non riesco a "estrarre" il mio tipo qui ... ho provato un paio di cose con GetGenericArguments()
e altre cose ma o don' t compilare o restituire un valore null/Elenco ... Cosa devo fare?
EDIT: Ecco la soluzione che si adattano il mio codice per coloro che avranno lo stesso problema:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
foreach (Type type in MyType.GetInterfaces())
{
if (type.IsGenericType)
Type genericType = type.GetGenericArguments()[0];
}
}
}
Hai visto questo post: http://stackoverflow.com/questions/557340/c-sharp-generic-list-t-how-to-get-the-type-of-t –
Sì, e una coppia di un altro, non rispondono alla mia domanda ... La mia sensazione è che devo usare GetInterfaces() e fare alcune altre cose, in realtà sto provandolo! –