我有以下類:類型不可知類在泛類中調用泛型和非泛型方法?
public class GenericClass<T> : IGenericClass<T> where T : class
{
public GenericClass()
public GenericClass(Entity e)
public IQueryable<T> GenericMethod1()
public IEnumerable<T> GenericMethod2()
public T NonGenericMethod1(T t)
}
類的偉大工程;但是我開始遇到的問題是,我必須爲每個我想要使用的類型實例化GenericClass的另一個實例,並且它變得有點瘋狂。我可以創建一些抽象來簡化它嗎?
我正朝着這個方向前進,但我不知道這是否是正確的選擇,或者是否有更好的設計模式可供使用;另外,這兩個調用調用根本無法正確工作。
public class TestClass
{
private Type type;
public object Invoke(string method, object obj)
{
type = obj.GetType();
MethodInfo m = typeof(GenericClass<>).GetMethod(method);
var result = new object();
if(m.IsGenericMethod == true)
result = m.MakeGenericMethod(type).Invoke(null, new object[] { obj });
else
result = m.Invoke(null, new object[] { obj });
return result;
}
}
TIA
對你來說可能很明顯,但對我來說完全不清楚:你在做什麼? – dtb 2011-05-25 23:23:14
對象是否是GenericClass或T的實例? –
dlev
2011-05-25 23:23:30
@dlev - obj是一個T. @dtb的實例 - 我想要一個可以實例化一次的類,然後調用GenericClass中的任何方法,通過傳遞它來設置類型,而不必爲每個我需要的類型實例化一個GenericClass的不同實例。我不確定是否有可能,但是如果我現在可以在我的代碼庫中,那肯定會讓我的生活更輕鬆...... – morganpdx 2011-05-25 23:31:48