Получить тип универсального интерфейса?

У меня появился общий интерфейс вроде этого:

public interface IResourceDataType<T>
{
    void SetResourceValue(T resValue);
}

Затем я получил этот класс, реализующий мой интерфейс:

public class MyFont : IResourceDataType<System.Drawing.Font>
{
    //Ctor + SetResourceValue + ...
}

И, наконец, я получил:

var MyType = typeof(MyFont);

Теперь я хочу получить тип System.Drawing.Font от MyType! На данный момент у меня есть такой код:

if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
    //If test is OK
}

Но мне не удается "извлечь" здесь свой Тип ... Я пробовал кое-что с GetGenericArguments () и другими вещами, но они либо не компилируются, либо возвращают нулевое значение / список ... Что мне делать?

РЕДАКТИРОВАТЬ: Вот решение, которое подходит моему коду для тех, кто столкнется с той же проблемой:

if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
    foreach (Type type in MyType.GetInterfaces())
    {
        if (type.IsGenericType)
            Type genericType = type.GetGenericArguments()[0];
        }
    }
}
14
задан Guillaume Slashy 16 January 2012 в 14:40
поделиться