У меня появился общий интерфейс вроде этого:
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];
}
}
}