我有一个非常简单的通用构造方法:
public T Instance<T, TT>(TT parms) where T : class
{
return (T)Activator.CreateInstance(typeof(T), new[] { parms });
}
当我调用这样的方法时:
Instance<MyClass, string>("SomeStringValue").Customers.Where(x => x.Id == Id).Select(p => blah..blah...blah;
我得到一个'System.MissingMethodException:找不到'MyClass'类型的构造函数。在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,Binder binder,Object [] args,CultureInfo 文化...'
我试过添加绑定标志等,但没有任何运气。
我基本上是在尝试用参数实例化一个对象。我可以毫无问题地明确声明对象:
var myObj = new MyClass("SomeStringValue");
但我需要使用我的通用构造函数。
谁能澄清我错过了什么?
编辑 一个完整的程序(简化)。
public abstract class A
{
public T Instance<T, TT>(TT parms) where T : class
{
return (T)Activator.CreateInstance(typeof(T), new[] { parms });
}
}
public class B
{
public B(string someValue)
{
var myValue = someValue;
}
}
public class C
{
public void DoStuff()
{
var x = Instance<B, string>("SomeStringValue");
}
}
是我想要做的。