【发布时间】:2011-04-09 23:58:51
【问题描述】:
我了解 Delegates 提供的高性能反射可能仅比常规显式 c# 代码慢 15%。但是,我可以在 stackoverflow 上找到的所有示例都是基于对通过委托访问的方法/属性类型的先验知识。
考虑到此类的先验知识,为什么首先要使用反射代理访问?
无论如何,我面临的反射编码任务是如何为在运行时仅提供类类型名称的未知类属性列表实现高性能属性获取/设置访问?我可以编写反射检查的基础知识以生成属性列表,但是如何为一组可能随机的属性类型连接一组基于 Delegate 的访问器?
假设属性类型仅限于一系列基本 DB 列类型,答案是 case 语句返回:
Func<int> or Func<string> etc?
Edit-1:我仅限于 .Net 3.5
【问题讨论】:
-
您在寻找 typeof(Func).MakeGenericType(myDbType); 吗?还是您也需要委托的实现?此外,events 的概念是代表的一种常见的基于非反射的使用场景。 Enumerable 的扩展方法也为委托/lambda 的实用性提供了丰富的示例。
-
@Kirk。对于我需要通过委托设置器填充的每个类,我需要保存这些设置器的数组。在填充 Delegate setter 数组时,我需要根据我刚刚通过反射发现的 Property 类型来制造一个 Delegate。 MakeGenericType() 对我来说似乎是缺少的链接。
标签: c# delegates properties