我有以下類別:控制哪一部分是由在MEF
public class Foo
{
[Import]
public IFirstInterface firstImport;
[Import]
public ISecondInterface secondImport;
// ...
}
public class A : ISecondInterface {}
public class B : ISecondInterface {}
調用
var foo = compositionContainer.GetExportedValue<Foo>();
時指定閹我想用A級,我想能夠在課堂上酒吧,或B.
我知道,我可以在GetExportedvalue方法中指定一個合約名稱。但據我瞭解,這意味着有兩個班Foo。我想重用相同的類,但控制使用哪個類(A或B)來滿足ISecondInterface依賴性。 「
編輯: 」什麼規則將決定您是否使用A類或B類?「
答: Foo由wcf服務調用。 A類和B類的不同之處在於它們正在處理不同的實體。這些實體具有不同的字段,不能以相同的方式查詢。
我的課程不是英語,但我會嘗試翻譯成比Foo和Bar更有意義的術語。
Foo可能是一個RecordAssigner。 RecordAssigner將記錄分配給用戶。這樣做的邏輯包含在這個類中。 ISecondInterface是與記錄一起工作的數據層類的接口。
它的實現公開方法工作在不同種類的記錄。雖然這兩種記錄需求都可以公開必要的方法,但它們在數據級別上的操作方式不同。
在服務級別,我希望能夠在不復制RecordAssigner中的所有代碼的情況下擁有稱爲 AssignRecordTypeA和AssignRecordTypeB的方法。
您示例中的第一個導入似乎與該問題無關,這讓我困惑了一陣子。 –