2010-12-06 39 views
4

正如标题所述,在.Net中反映了一个目标,还是从.Net内部设计(例如编译为IL程序集的语言的方式)的自然结果?Microsoft是否打算在.Net中支持Reflection?还是有义务?

而且关于反射的增益。以下是我在本网站中看到的一些反射用途:

  • 使用反射访问重写的基类方法。
  • 使用反射来访问一个类的私人领域。

和我的另一个问题是,如果我们能够通过使用反射访问私有字段和重载的基本方法(打破核心框架规则),那么为什么要把这些(严格?)角色放在首位呢?

回答

8

反射是一个非常强大的工具;我完全认为这是非常非常慎重的。尽管如此,我没有支持的报价。然而 - 是的,强大的反射API对于像BinaryFormatter以及从第0天开始的“远程处理”堆栈(但现在不太受欢迎)而言也是必需的。

事实上,大量的库代码使用反射;数据绑定或序列化,例如。没有反思,你需要手动编写代码以做一些非常简单的事情,库通过反射自动处理。

另一大用途是元编程;在运行时编写代码以扩充编译的代码;在IoC/DI等事情中很有用。或者只是当你需要反射而更快; p

private; .NET中有信任级别;不是全部代码可以访问您的内部,除非您以完全信任运行(诚然,大多数代码确实以完全信任运行)。并且超出某种程度的偏执狂,这是一个虚假的目标无论如何,因为有一种方式外部的.NET戳一个进程。