反思的真实世界的例子

时间:2009-05-15 17:35:54

标签: reflection

在生产代码中使用Reflection的最佳示例是什么?

10 个答案:

答案 0 :(得分:3)

ASP.NET MVC推断要从URL调用的操作和控制器。一般路由。

答案 1 :(得分:2)

最近,我不得不使用反射从程序集的路径加载程序集(以便调查其公共类型)。

答案 2 :(得分:2)

在Linq To Sql出现之前......我必须在.NET 2.0中编写自己的ORM。

我大量使用反思来反思:

  • 到CRUD存储过程的类
  • 列名称的属性
  • 哪些操作对班级有效

我还使用了反射来检索结果后的所有变量赋值(所有类都继承了一个ActiveRecord类来处理对DAL的调用)。

粗糙的东西......但经过一些性能调整之后,这并不是一件坏事。

答案 3 :(得分:1)

从您拥有ID,类型和其他数据的SQL表中提取数据

然后你可以加载“雪佛兰”并使用它的所有方法

答案 4 :(得分:1)

我确实有机会在一个点上编写一个Python O / R映射器,但它是一个概念证明,从未投入生产。

我做了很多工作,在DBMS上广泛使用系统数据字典(例如,通用的缓慢变化的维度加载器)。可能有人认为这与原则上的反思性编程没有什么不同。

最后,Python的各种形式都很容易做反思。事实上,它在这方面非常擅长,我用它来探讨其他语言中的底层API - 并使用反射功能来查询底层接口。我已经完成了Python世界中存在的几乎所有反射机制:Python API上的CPython和使用makepy的COM API,Java API的Jython和.Net API的IronPython。

答案 5 :(得分:1)

在我最近的一个应用程序中,Kofax Express的加载项,我可以选择OCR文件并输出PDF。由于我使用的OCR工具有运行时费用,因此我将OCR部件分开组装。如果该文件存在,我将显示OCR选项并稍后绑定程序集并调用所需的方法并使用反射附加到事件。一个简单的插件架构,没有接口,如果不需要OCR,客户不必支付版税;我们只是不给他们OCR dll。

答案 6 :(得分:0)

WPF数据绑定:

1)绑定路径“(TextBox.Text)”vs“Text”?

如果绑定到名为Text的路径,WPF将使用反射来解析名称。如果使用类限定名称,则绑定可避免反射性能命中。类限定名称还允许绑定到附加属性!

(通过http://dotnet.org.za/rudi/archive/2008/03/25/10-things-i-didn-t-know-about-wpf-data-binding.aspx

答案 7 :(得分:0)

答案 8 :(得分:0)

我的DAL完全基于反思。它反映了构建SQL的POCO属性。

答案 9 :(得分:0)

在工厂中,我们使用反射来传递接口的“虚拟”实现或接口的真实(挂钩到DB)实现,基于属性文件(在Java中)指定的类。