2010-12-06 41 views
4

正如標題所述,在.Net中反映了一個目標,還是從.Net內部設計(例如編譯爲IL程序集的語言的方式)的自然結果?Microsoft是否打算在.Net中支持Reflection?還是有義務?

而且關於反射的增益。以下是我在本網站中看到的一些反射用途:

  • 使用反射訪問重寫的基類方法。
  • 使用反射來訪問一個類的私人領域。

和我的另一個問題是,如果我們能夠通過使用反射訪問私有字段和重載的基本方法(打破核心框架規則),那麼爲什麼要把這些(嚴格?)角色放在首位呢?

回答

8

反射是一個非常強大的工具;我完全認爲這是非常非常慎重的。儘管如此,我沒有支持的報價。然而 - 是的,強大的反射API對於像BinaryFormatter以及從第0天開始的「遠程處理」堆棧(但現在不太受歡迎)而言也是必需的。

事實上,大量的庫代碼使用反射;數據綁定或序列化,例如。沒有反思,你需要手動編寫代碼以做一些非常簡單的事情,庫通過反射自動處理。

另一大用途是元編程;在運行時編寫代碼以擴充編譯的代碼;在IoC/DI等事情中很有用。或者只是當你需要反射而更快; p

private; .NET中有信任級別;不是全部代碼可以訪問您的內部,除非您以完全信任運行(誠然,大多數代碼確實以完全信任運行)。並且超出某種程度的偏執狂,這是一個虛假的目標無論如何,因爲有一種方式外部的.NET戳一個進程。