我有以下类:类型不可知类在泛类中调用泛型和非泛型方法?
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