我有一個通用的接口是這樣的:獲取通用接口的類型?
public interface IResourceDataType<T>
{
void SetResourceValue(T resValue);
}
然後我得到了這個類,它實現我的接口:
public class MyFont : IResourceDataType<System.Drawing.Font>
{
//Ctor + SetResourceValue + ...
}
最後我得到了一個:
var MyType = typeof(MyFont);
我,現在,想要從MyType獲得System.Drawing.Font
類型! 目前,我得到這個代碼:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
//If test is OK
}
但我不設法在這裏「抽取」我喜歡的類型...... 我試了幾件事情與GetGenericArguments()
和其他的東西,但他們要麼不要」 t編譯或返回空值/列表... 我該怎麼做?
編輯: 這裏是適合我的代碼對於那些誰就會得到同樣的問題的解決方案:
if (typeof(IResourceDataType).IsAssignableFrom(MyType))
{
foreach (Type type in MyType.GetInterfaces())
{
if (type.IsGenericType)
Type genericType = type.GetGenericArguments()[0];
}
}
}
你見過這個帖子:http://stackoverflow.com/questions/557340/c-sharp-generic-list-t-how-to-get-the-type-of-t – 2012-01-16 14:30:46
是的,和一對夫婦他們不回答我的問題......我的感覺是,我必須使用GetInterfaces()並做一些其他的事情,我實際上正在嘗試它! – 2012-01-16 14:32:15