我有3個C#項目:A,B和C.B引用C和A引用B(A - > B - > C)。 B是A的API,C爲B做了一些較低級別的工作。要求另一個dll的類作爲API的輸入嗎?
B向A公開了一些公共方法,這些公共方法當前需要C中的類作爲輸入。有沒有辦法讓A能夠創建所需類的實例,而無需直接引用C?
B在API中需要C類還是不好?如果在B中創建一個類來反映C中的類,那麼B只會暴露一個完全依賴於它自己的API?
我有3個C#項目:A,B和C.B引用C和A引用B(A - > B - > C)。 B是A的API,C爲B做了一些較低級別的工作。要求另一個dll的類作爲API的輸入嗎?
B向A公開了一些公共方法,這些公共方法當前需要C中的類作爲輸入。有沒有辦法讓A能夠創建所需類的實例,而無需直接引用C?
B在API中需要C類還是不好?如果在B中創建一個類來反映C中的類,那麼B只會暴露一個完全依賴於它自己的API?
「有沒有辦法讓A能夠在不直接引用C的情況下創建所需類的實例?」
不是如果你想讓A知道那就是它在做什麼,沒有。你可以,當然,有一個呼叫B到創建一些接口他們都知道並且由一類C.
實現的實例「是壞的B到需要在C類中的其API?」
不好用什麼方式?在包括.NET本身在內的各種圖書館中都有這樣的先例。這對我來說似乎並不壞,它可能是解決其他問題的最佳方法,否則會涉及到循環引用(這不是您的場景中的問題,但它確實出現了,並且這是一種解決方法)。
「這將是最好創建在B中的類,反映從C類,以便乙僅公開了一個API,完全依賴於本身?」
有時候有很好的理由來創建這樣的代理對象,但這樣做的目的只是爲了從另一個DLL中隱藏一個DLL中的類型?不,我不明白這有多好。如果你想完成這樣的事情,就像那樣,正確的方法是聲明一個接口,由A和B知道,並由C中的一個類實現。
謝謝你的回答!你給了我一些信心,現在我只會在C中引用C ......儘管A並不關心C(A只想使用B),但它仍然感覺有點不對。我也會考慮你的其他建議。再次感謝! – user4237165 2014-12-07 00:44:32