正如标题所述,.Net中的反射是一个目标,还是.Net内部设计的自然结果(就像语言编译成IL组件的方式一样)?
关于反思的获得。以下是我在本网站上看到的一些反射用法:
我的另一个问题是,如果我们能够通过使用反射来访问私有字段和重写的基本方法(以打破核心框架规则),那么为什么要首先将这些(严格的?)角色放在首位?
答案 0 :(得分:8)
反思是一个非常强大的工具;我完全相信这是非常非常慎重的。不过,我没有引用来支持这一点;但是 - 是的,强大的反射API对于像BinaryFormatter
这样的东西以及从第0天开始的“远程处理”堆栈也是必要的(但现在不太受欢迎)。
实际上,大量的库代码使用反射;例如,数据绑定或序列化。如果没有反射,你需要手动编写 lot 代码,以便做一些库通过反射自动处理的非常简单的事情。
另一个重要用途是元编程;在运行时编写代码以扩充编译的代码;在IoC / DI等方面有用。或者只是当你需要反射但更快; p
像private
之类的东西; .NET中存在信任级别;不是所有代码都可以访问你的内部,除非你完全信任(不可否认,大多数代码 以完全信任的方式运行)。除了某种程度的偏执之外,它还是一个错误的目标无论如何,因为有一些外部的.NET 进入一个过程。