实时场景中C#中反射的用法和目的

时间:2017-06-20 07:04:07

标签: c#

我想知道C#中Reflection的用途。我已经在各种网站上阅读了有关它的各种文章,包括'Stack Overflow',但我仍然无法找到描述Reflection的综合答案。如果有人能够提供答案来解释他们遇到使用Reflection是必要的情况的实时场景,那将对我非常有帮助。

2 个答案:

答案 0 :(得分:2)

想象一下,你想构建一个插件系统。您将拥有应用程序需要了解的有关插件的最少内容。让我们假设如下:

  • 每个插件都是dll
  • 每个插件都有一个名为PluginStart的类
  • PluginStart位于命名空间Plugin
  • PluginStart有一个属性Message of string

如果您现在想要加载插件并获取Message属性值,则必须使用反射来完成。一个简单的例子可能是这样的:

Assembly dll = Assembly.LoadFile(dllPath);
Type importStartType = dll?.GetType("Plugin.pluginStart");
string message = importStartType?.GetField("Message")?.GetValue(importStartType)?.ToString();

答案 1 :(得分:0)

.NET Framework的Reflection API允许您以编程方式在运行时获取Type(程序集)信息。我们还可以使用.NET Reflection实现后期绑定。在运行时,Reflection机制使用PE文件来读取有关程序集的信息。 Reflection允许您使用编译时不可用的代码。 .NET Reflection允许应用程序收集有关自身的信息并自行处理。它可以有效地用于查找程序集中的所有类型和/或动态调用程序集中的方法。这包括有关对象的类型,属性,方法和事件的信息。通过反射,我们可以动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。我们还可以使用反射访问属性信息。

这会对你有帮助。

Why is the use of reflection in .NET recommended?

http://www.c-sharpcorner.com/uploadfile/keesari_anjaiah/reflection-in-net/