Tag: 操作码

动态对象属性populator(无reflection)

我想在不使用reflection的情况下填充对象的属性,其方式类似于CodeProject上的DynamicBuilder 。 CodeProject示例是为使用DataReader或DataRecord填充实体而定制的。 我在几个DAL中使用它以达到很好的效果。 现在我想修改它以使用字典或其他数据无关的对象,以便我可以在非DAL代码中使用它 – 我目前使用reflection。 我对OpCodes和IL几乎一无所知。 我只知道它运作良好,比reflection更快。 我试图修改CodeProject示例,由于我对IL的无知,我已经陷入两行。 其中一个处理dbnulls,我很确定我可以丢失它,但我不知道它之前和之后的行是否相关以及它们中的哪一个也需要去。 另一方面,我认为,是之前从数据线中取出价值的,现在需要将其从字典中拉出来。 我想我可以用“property.Value”替换“getValueMethod”,但我不确定。 我也愿意采用替代/更好的方法来剥皮这只猫。 这是迄今为止的代码(注释掉的行是我坚持的): using System; using System.Collections.Generic; using System.Reflection; using System.Reflection.Emit; public class Populator { private delegate T Load(Dictionary properties); private Load _handler; private Populator() { } public T Build(Dictionary properties) { return _handler(properties); } public static Populator CreateBuilder(Dictionary properties) { //private static […]