【发布时间】:2012-05-16 11:37:40
【问题描述】:
我正在开发一个简单的 ORM 库,其实很简单...
我有一个 T 类型的查询
public IEnumerable<T> Query<T>(string query)
该方法采用 T 类,它获取属性,遍历它们并相应地设置它们
aProperty.SetValue(tmpGenericObjectOfTypeT, newValue, null);
我的问题是 SetValue 非常慢,我看到了两种选择,使用 Reflection.Emit 或使用委托,不幸的是我不知道如何做这些。
正如我所读到的,使用委托更优雅一些,我想要那个解决方案,但我真的不知道该怎么做,我已经搜索并找到了很多关于如何调用方法的信息使用委托,而不是如何设置属性...
【问题讨论】:
-
除非您已经知道您的财产代表的姓名,否则不会真正帮助您。由于您想在运行时执行此操作,因此您会通过 Reflection.Emit 或使用 ExpressionTrees 进行反射或元编程。两者都不是令人愉快的,但如果你想要更多的表现,那么你将不得不硬着头皮。
-
看起来像发射它。谢谢。如果我让他们实现一个基类,这样我就知道委托的名字了,那不行吗?
标签: c# reflection