在MSDN文檔中,System.Reflection.Assembly有一個名爲CodeBase的屬性,它被定義爲可覆蓋。如何覆蓋非繼承類中的屬性?
Public Overridable ReadOnly Property CodeBase As String
但是,如果我試圖創建一個繼承System.Reflection.Assembly一個新的類,我得到告訴我,它不能被繼承的錯誤消息。那麼我怎麼能覆蓋這個屬性?
在MSDN文檔中,System.Reflection.Assembly有一個名爲CodeBase的屬性,它被定義爲可覆蓋。如何覆蓋非繼承類中的屬性?
Public Overridable ReadOnly Property CodeBase As String
但是,如果我試圖創建一個繼承System.Reflection.Assembly一個新的類,我得到告訴我,它不能被繼承的錯誤消息。那麼我怎麼能覆蓋這個屬性?
不幸的是,你不能這樣做。
儘管Assembly
類本身被聲明爲public
,但它只提供了一個internal
構造函數。這實際上意味着它只能從它自己的程序集mscorlib中實例化(或繼承)。
我不認爲你可以。雖然Assembly
不是sealed
(NotInheritable
在VB.NET中),它沒有公共構造函數;構造函數是internal
(Friend
在VB.NET中)。所以它可以被繼承,,但只有與它自己的(這是mscorlib)相同的程序集中的類型。
將此標記爲答案,因爲它比另一個快了約10秒。 – 2009-10-20 11:22:37
不太確定,但我確實認爲盧克比我更快一點。 – 2009-10-20 11:29:08
可能已經發誓這一個更高的列表按照最舊的排序。噢,謝謝你的誠實;) – 2009-10-20 11:48:46
我可能會推薦使用封裝而不是繼承來解決這個問題。 – 2009-10-20 10:49:49
我不想知道爲什麼你需要從Assembly繼承... – 2009-10-20 11:02:37
Stefan,我想從一個字節數組加載一個程序集,同時將codebase屬性設置爲原始程序集文件的位置。我知道你說你不想知道,但我認爲也許我的理由並不像你想象的那樣糟糕:) – 2009-10-20 11:21:54