2
我有一個基類和一個派生類,我想導出從派生類型。MEF導出派生類和新實例
所以這樣
public class ClassA { }
public class ClassB : ClassA { }
我需要加載從ClassB的來源於ClassA的派生類型,但也類型。
var registration = new RegistrationBuilder();
registration.ForTypesDerivedFrom<ClassA>()
.Export<ClassA>();
registration.ForTypesDerivedFrom<ClassB>()
.Export<ClassB>();
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new DirectoryCatalog(".", registration));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly(), registration));
container = new CompositionContainer(catalog);
container.SatisfyImportsOnce(this, registration);
我認爲問題是,當出口ClassA
派生類型,還出口ClassB
類型是顯而易見的,就是我要尋找的功能。但這意味着ClassB
導入不是作爲獨立對象導出的,而是與導入爲ClassA
類型的導入相同。如果我沒有專門導出ClassB
,那麼使用它們的任何導入都會失敗。
我可能會試圖做一些愚蠢的嘗試和解決我的問題在這裏,MEF不喜歡?我曾考慮過讓MEF進口非單一進口,但這可能會破壞進口產品。
你得到的錯誤信息是什麼?請注意,RegistrationBuilder.ForTypesDerivedFrom將不包含指定的類型,僅包含其派生類。 –