Sha*_*pta 39 .net c# reflection
我正在读msdn关于反思的文章,但我甚至无法理解它的利益,它的用法.
能否请您简要介绍一下反思是什么,以及如何从中受益.
Jus*_*ner 48
Reflection允许您编写可以检查代码本身的各个方面的代码.
它使您可以执行以下简单操作:
在运行时检查对象的类型(typeof()例如,简单调用)
在运行时检查对象的属性以更改方法的行为(.NET中的各种序列化方法)
对于更复杂的任务,例如:
较早的是更常见的用法.后者有助于为其应用程序或希望在运行时根据配置更改交换程序集的人员开发插件体系结构.
Jim*_*ert 13
反射是一种在运行时以编程方式发现类型的方法.这非常重要,因为.NET语言是强类型的.能够访问该元数据非常有用.
现在一件大事(流畅的接口/适配器)很大程度上依赖于反射.特别是静态反射非常大.如果您想查看具体示例和静态反射的详细说明,请查看:
http://jagregory.com/writings/introduction-to-static-reflection/
http://www.lostechies.com/blogs/gabrielschenker/archive/2009/02/03/dynamic-reflection-versus-static-reflection. ASPX
当然,这一般是一小部分反射.如果您想了解有关反射的一般用法的更多信息,请查看Apress Pro C#2008和.NET 3.5平台,第四版,第16章.它深入研究.NET类型系统以及如何使用它在库中和运行时.
Dav*_*vid 10
Reflection允许您的代码调用编译代码时您不知道的方法和属性.其中一个使用它的内置类是XmlSerializer.您可以将任何要转换为XML的对象传递给它.它询问对象所有属性使用反射的是什么,然后能够生成包含表示对象所需元素的XML文档.
反思是类型提供自身信息的能力.例如,程序集可以告诉您它包含的内容,类型可以告诉您它的方法,属性等.
动态提供此信息在许多方面都很有用.要考虑的一个简单示例是Web服务使用的元数据 - 当一个人"使用"Web服务时,会为其客户生成一个代理类.此代理是从WSDL文档生成的,通常是通过反射生成的类型元数据生成的.
另一个简单的例子是动态加载类型以执行某些工作单元.我工作的一个项目利用反射从数据库加载"规则"以应用于系统中的输入.