Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的反射是什么,好处是什么。如何使用它来获得好处_C#_.net_Reflection - Fatal编程技术网

C#中的反射是什么,好处是什么。如何使用它来获得好处

C#中的反射是什么,好处是什么。如何使用它来获得好处,c#,.net,reflection,C#,.net,Reflection,我在msdn上读到一篇关于它的文章,但我甚至无法理解它的10%的好处,它的用法 请简要介绍一下什么是反射,以及我如何从中获益。反射是类型提供自身信息的能力。例如,程序集可以告诉您它包含什么,类型可以告诉您它的方法、属性等等 动态提供此信息在许多方面都很有用。一个简单的例子是web服务使用的元数据——当一个人“消费”web服务时,会为其客户机生成一个代理类。此代理是从WSDL文档生成的,通常是从通过反射生成的类型元数据生成的 另一个简单的例子是动态加载类型以执行某些工作单元。我参与的一个项目利用反

我在msdn上读到一篇关于它的文章,但我甚至无法理解它的10%的好处,它的用法


请简要介绍一下什么是反射,以及我如何从中获益。

反射是类型提供自身信息的能力。例如,程序集可以告诉您它包含什么,类型可以告诉您它的方法、属性等等

动态提供此信息在许多方面都很有用。一个简单的例子是web服务使用的元数据——当一个人“消费”web服务时,会为其客户机生成一个代理类。此代理是从WSDL文档生成的,通常是从通过反射生成的类型元数据生成的


另一个简单的例子是动态加载类型以执行某些工作单元。我参与的一个项目利用反射从数据库加载“规则”以应用于系统中的输入。

反射允许代码调用编译代码时不知道的方法和属性。XmlSerializer是使用该函数的内置类之一。您可以将任何要转换为XML的对象传递给它。它询问对象使用反射的所有属性,然后能够生成包含表示对象所需元素的XML文档。

反射允许您编写可以检查代码本身各个方面的代码

它使您能够执行以下简单操作:

  • 在运行时检查对象的类型(例如,对
    typeof()
    的简单调用)

  • 在运行时检查对象的属性以更改方法的行为(.NET中的各种序列化方法)

  • 更复杂的任务,如:

  • 在运行时加载程序集,查找特定类,确定它是否与给定接口匹配,并动态调用某些成员

  • 更早的是更常见的用法。后者有助于开发人员为其应用程序开发插件体系结构,或者帮助那些希望根据配置更改在运行时交换程序集的人。

    反射是一种在运行时以编程方式发现类型的方法。这非常重要,因为.NET语言是强类型的。能够访问该元数据非常有用

    现在有一件大事(流畅的接口/适配器)严重依赖反射。特别是,静态反射相当大。如果您想查看静态反射的具体示例和良好解释,请查看:



    当然,这通常只是反射的一小部分。如果你想了解更多关于反射的一般用法的信息,请参阅第16章。它深入研究了.NET类型的系统以及如何在库和运行时使用它。

    反射帮助您进行元编程,这无疑是最酷的编程技术之一。有关更多信息,请使用Google进行元编程。

    反射的好处之一是,它允许您保存数据集设计器中的所有更改,就像SQL中的事务一样。

    反射是asp.net中可用的强大名称空间。通过使用它,我们可以创建动态对象运行时并调用它。它主要用于开发框架类型的应用程序。

    可能的重复项:。。。对所有人可能的重复:我仍然无法得到,我是如何受益的。你们中有谁能举一个最简单的例子来说明它在编码帮助使代码更具可重用性和功能方面的好处吗?反射不是ASP.NET或任何其他.NET技术的一部分,因为它是在运行时调查程序集的能力,而不管您使用的是什么类型的项目。