反思的适用性

时间:2011-01-23 02:22:11

标签: .net reflection

有一些很棒的文章,例如this one关于反思。

我想知道的是真实世界的例子,它是使用它和现实世界的原因或什么时候有用,为什么在原始“你可以得到类型信息”之外......我在本文和其他文章中得到了所有这些。

好的,那么,在实际编程情况下,它对我的​​实际情况并没有真正帮助。我正在试图弄清楚人们如何在应用程序中使用它,很好的例子,当你想要使用它时,它们只是用来让我的脑袋缠身。

4 个答案:

答案 0 :(得分:3)

反射对运行时插件很有用。当你创建一个可以通过插件扩展的程序时,根据定义你不知道编译时类和方法是什么,所以你使用反射在运行时加载库然后调用适当的方法。 / p>

答案 1 :(得分:1)

当您处理序列化时,反射也很有用。

就在最近,我不得不写一些非常自定义的序列化代码来与第三方服务交谈,这意味着使用反射来查找属性,并根据属性确定属性是否符合序列化条件。

答案 2 :(得分:1)

在Java中,反射的一个很好的现实生活示例是Spring's Inversion of Control (IoC) framework,您可以使用XML配置连接bean。

答案 3 :(得分:1)

正如Mehrdad所指出的,运行时插件是使用反射的地方之一。一个很好的例子是JDBC API。您使用反射按名称加载驱动程序类;这是唯一的方法,因为JVM无法知道自己加载哪个类。

反射有用的另一种情况是应该运行任意代码的应用程序框架。例子:

  • 应用程序服务器
  • 单元测试框架(JUnit广泛使用反射)
  • RPC类型的应用程序(例如XML-RPC)

另一个是持久性框架,它可以加载/保存任意类实例(例如Hibernate)。