所以,我整个上午一直试图研究这个问题,并且没有运气。我试图找到一种方法来动态创建一个方法/委托/ lambda,它返回从某个基类继承的某个类的新实例(直到运行时才知道)。
我可以保证关于未知/动态类
的以下内容我计划做以下事情:
我只需要上面的#2帮助!!!我不知道从哪里开始。我真的只需要一些参考资料来帮助我入门,或者将一些关键字投入谷歌。
这是为我们办公室提供紧凑/简单的ORM。我理解上面的内容并不简单,但一旦工作,应该使代码维护变得异常简单。
如果您需要更多信息,请告诉我们!并提前感谢! :)
答案 0 :(得分:4)
您可以使用 LINQ表达式在运行时构造lambda (long p) => new XXX(p) as Row
:
Type type = // ...
ConstructorInfo ctor = type.GetConstructor(new Type[] { typeof(long) });
var p = Expression.Parameter(typeof(long), "p");
var expr = Expression.Lambda<Func<long, Row>>(
Expression.TypeAs(
Expression.New(ctor, p),
typeof(Row)),
p);
Func<long, Row> rowCreator = expr.Compile();
Row row = rowCreator(10);
答案 1 :(得分:3)
Activator.CreateInstance
怎么办?
样品:
string typeName = ...;
Activator.CreateInstance(Type.GetType(typeName), params);