que tiene una interfaz genérica de esta manera:Obtener el tipo de interfaz genérica?
public interface IResourceDataType<T>
{
void SetResourceValue(T resValue);
}
Entonces tuve esta clase que implementa la interfaz de mi:
public class MyFont : IResourceDataType<System.Drawing.Font>
{
//Ctor + SetResourceValue + ...
}
Y finalmente consiguió un:
var MyType = typeof(MyFont);
I, ahora , quiero obtener el tipo System.Drawing.Font
de MyType! Por el momento, tengo este código:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
//If test is OK
}
pero no se las arreglan para "extraer" Mi tipo aquí ... he intentado un par de cosas con GetGenericArguments()
y otras cosas pero, o don' t compilar o devolver un valor nulo/Lista ... ¿Qué debo hacer?
EDIT: Aquí está la solución que se ajusta a mi código para los que van a tener el mismo problema:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
foreach (Type type in MyType.GetInterfaces())
{
if (type.IsGenericType)
Type genericType = type.GetGenericArguments()[0];
}
}
}
¿Has visto esta publicación: http://stackoverflow.com/questions/557340/c-sharp-generic-list-t-how-to-get-the-type-of-t –
Sí, y un par de otros, no responden a mi pregunta ... Mi sensación es que tengo que usar GetInterfaces() y hacer otras cosas, ¡en realidad lo estoy intentando! –