正在執行防止界面組件C I有以下幾點:從在其他組件
public interface InterfaceA
{
string Data {get; }
}
public interface InterfaceB
{
InterfaceA DoStuff();
}
public interface InterfaceC
{
IEnumerable<InterfaceA> GetStuffThatHaveBeenDone();
}
InterfaceB的實現被稱爲多爾在組件A(其是主要的項目)所定義。 類似地,在AssemblyA中定義了InterfaceA的實現,但程序集B對這些實現一無所知。
裝配B將由外部公司開發,並將由裝配A引用(在設計時不動態引用)。該公司的目的是爲InterfaceC編寫一個實現。
以下是這種情況:我想阻止外部公司創建自己的InterfaceA實現並將其放入InterfaceC.GetStuffThatHaveBeenDone()中返回的列表中。預期的用法是:他們調用InterfaceB.DoStuff(),獲取InterfaceA的實例,並將其添加到它們將返回的列表中。
我必須對InterfaceC.GetStuffThatHaveBeenDone()返回的列表中包含的對象的類型作出一個假設。我知道它們都將具有隻在程序集A中定義的某種類型。因此,我試圖確保這些對象只能在程序集A中創建,並且我希望在編譯時強制執行此操作,以避免發現MyCustomImplementionOfA對象在列表中。
因此,我想弄清楚如何防止在另一個程序集中實現一個接口。我在想,也許可以通過稍微反思一下我的設計購買來解決問題,我似乎找不到。
謝謝
這就是奇怪的要求。你爲什麼要這樣? – TcKs
不,這是不可能的。 – CathalMF
@TcKs基本上,要利用接口隔離原理。我希望實施程序集B的人只使用對他們很重要的數據。他們通過這些接口封裝的抽象來修改域實體。但是從大會A的角度來看,我想要使用這些領域實體。如果需要,接口B和C封裝了服務和「DTO」,interfaceA封裝了一個域對象。我想確保,我的域對象在InterfaceC中返回 – reddy