2
在.NET中,是由運行時還是由編譯器強制的私有方法和屬性?在.NET中,如何限制對私有方法的訪問?
如果您嘗試調用另一個對象的私有方法,編譯器將拋出一個訪問異常。如果您手動操作IL或嘗試通過反射進行調用,您會做什麼?另外,它是否因運行時版本而異(1.1 vs 2.0 vs 3.5 vs 4.0)?
在.NET中,是由運行時還是由編譯器強制的私有方法和屬性?在.NET中,如何限制對私有方法的訪問?
如果您嘗試調用另一個對象的私有方法,編譯器將拋出一個訪問異常。如果您手動操作IL或嘗試通過反射進行調用,您會做什麼?另外,它是否因運行時版本而異(1.1 vs 2.0 vs 3.5 vs 4.0)?
這是編譯時限制。您可以在所有版本的.NET中通過Reflection調用私有方法。從.NET 4.0開始,您可以使用dynamics
來完成。另外,使用Reflection可以看到並使用自動屬性後面的方法。毫無疑問,這不是建議的。