2009-10-20 65 views
3

在MSDN文檔中,System.Reflection.Assembly有一個名爲CodeBase的屬性,它被定義爲可覆蓋。如何覆蓋非繼承類中的屬性?

Public Overridable ReadOnly Property CodeBase As String 

但是,如果我試圖創建一個繼承System.Reflection.Assembly一個新的類,我得到告訴我,它不能被繼承的錯誤消息。那麼我怎麼能覆蓋這個屬性?

+0

我可能會推薦使用封裝而不是繼承來解決這個問題。 – 2009-10-20 10:49:49

+0

我不想知道爲什麼你需要從Assembly繼承... – 2009-10-20 11:02:37

+0

Stefan,我想從一個字節數組加載一個程序集,同時將codebase屬性設置爲原始程序集文件的位置。我知道你說你不想知道,但我認爲也許我的理由並不像你想象的那樣糟糕:) – 2009-10-20 11:21:54

回答

5

不幸的是,你不能這樣做。

儘管Assembly類本身被聲明爲public,但它只提供了一個internal構造函數。這實際上意味着它只能從它自己的程序集mscorlib中實例化(或繼承)。

3

我不認爲你可以。雖然Assembly不是sealedNotInheritable在VB.NET中),它沒有公共構造函數;構造函數是internalFriend在VB.NET中)。所以它可以被繼承,,但只有與它自己的(這是mscorlib)相同的程序集中的類型。

+0

將此標記爲答案,因爲它比另一個快了約10秒。 – 2009-10-20 11:22:37

+0

不太確定,但我確實認爲盧克比我更快一點。 – 2009-10-20 11:29:08

+0

可能已經發誓這一個更高的列表按照最舊的排序。噢,謝謝你的誠實;) – 2009-10-20 11:48:46