簡體   English   中英

繼承具有相同名稱空間和相同類名的類

[英]Inherit a class with same namespace and same class name

我設法在2個類中完成它,但是我在3中失敗了。假設我有一個程序集A.DLL,它有namespace =“City”和class =“NY”

(我將在我的問題中將此課程稱為“A”)

在我的新項目中我的命名空間=“城市”,我有一個class =“NY”(我將在我的問題中將此類稱為“B”)

所以要實現B:A(B繼承/擴展自A)我創建了一個參考文獻A.DLL和“B”類參考“extern alias oldDll”

namespace City
{
    extern alias oldDll;

    public class NY : oldDll::City.NY
    {
        public NY() : base()
        {
        }
    }
}

這很好用! :)

問題是當我嘗試在另一個程序集中使用新的assebmly(B.DLL /“B”類)而只引用B.DLL時(我將在我的問題中將此類稱為“C”)並創建一個“City.NY”的新內容我得到一個例外,我認為這是因為“A.DLL”沒有加載。

如何從B加載它(如果這是問題)? 我沒有訪問“C.EXE”或C代碼(他只是從B.DLL創建City.NY)。 *注意:我不能重新編譯C.我只能運行它。

所以我有一個類“C”,它創建一個繼承自“A”的類“B”

我想到manualy在“B”代碼中加載“A.DLL”程序集,但首先發生的是base()構造函數..:\\

謝謝你的幫助

糾正我的任何人,因為我不是100%肯定,但通常你必須引用兩個程序集才能使它工作(這是一些包有依賴關系的方式,也必須在項目中下載和引用)。

我認為它不會編譯也不會丟失程序集。

發生的第一件事實際上不是基本構造函數,而是類型構造函數。 您可以使用以下內容指定:

static B()
{
}

請注意,類型構造函數不允許訪問修飾符。 但無論哪種方式,我想基礎類型甚至在此之前就被加載了,所以你在這里沒有機會。

配置文件也無濟於事。 他們可以重定向現有的引用(參見https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx ),但我不認為他們可以添加不存在的引用之前。

你不能。

簡單地說 - 讓City.NY中的B.dll繼承自City.NY中的A.dll是一個重大改變,需要重新編譯依賴於B.dll的程序集。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM