當然,我真正的代碼看起來不像這樣。我試着編寫半僞代碼,使它更清楚我想做的事情。
看起來它只是搞砸了事情。
所以,我其實想這樣做是這樣的:
Method<Interface1>();
Method<Interface2>();
Method<Interface3>();
...
嗯......我想,也許我可以使用反射把它變成一個循環。所以問題是:我該怎麼做。我有非常的淺層知識的反思。所以代碼示例會很棒。
的情況是這樣的:
public void Method<T>() where T : class
{}
public void AnotherMethod()
{
Assembly assembly = Assembly.GetExecutingAssembly();
var interfaces = from i in assembly.GetTypes()
where i.Namespace == "MyNamespace.Interface" // only interfaces stored here
select i;
foreach(var i in interfaces)
{
Method<i>(); // Get compile error here!
}
原帖:
嗨!
我通過所有接口試圖環路命名空間並將它們作爲參數傳遞給這樣的泛型方法:
public void Method<T>() where T : class
{}
public void AnotherMethod()
{
Assembly assembly = Assembly.GetExecutingAssembly();
var interfaces = from i in assembly.GetTypes()
where i.Namespace == "MyNamespace.Interface" // only interfaces stored here
select i;
foreach(var interface in interfaces)
{
Method<interface>(); // Get compile error here!
}
}
我得到的錯誤是「類型名稱,但局部變量名中」。 如果我嘗試
...
foreach(var interface in interfaces)
{
Method<interface.MakeGenericType()>(); // Still get compile error here!
}
}
我得到「無法應用運營商「<爲鍵入‘法團’和‘的System.Type’的操作數」 如何解決這個問題的任何想法?
我想存根據類型的泛型方法。但是,如果我使用反射來製作它,然後對生成的一個進行存根,它就會明白它不會殘留我想要的。 我的猜測是這是不可能的?或者是? 在一個列表中存在所有類型的通用方法...... – 2010-12-09 10:41:37