1
我正在使用Prism/Unity編寫WPF應用程序。基於接口的WPF w/Unity負載模塊
我有我的主要應用程序(與引導程序)。
我有我的每個模塊的接口。例如:
MyModuleA工具IMyModuleA
MyModuleB工具IMyModuleB
我想實現鬆散耦合和依賴注入。
所以在我的引導程序中,我想指定基於接口加載庫(類型)。這將允許我獨立構建模塊。
在我的引導程序,我有以下幾點:
protected override void ConfigureModuleCatalog() {
base.ConfigureModuleCatalog();
string path = @"Modules.MyModuleA.dll";
var assembly = Assembly.LoadFrom(path);
var type = assembly.GetType("Modules.MyModuleA.MyModuleA");
ModuleCatalog.AddModule(new ModuleInfo {
ModuleName = type.Name,
ModuleType = type.AssemblyQualifiedName,
Ref = new Uri(path, UriKind.RelativeOrAbsolute).ToString()
});
}
這是做的最好的方法是什麼?
維達斯,我同意你的看法,這就是我正在努力去做。然而,在你的例子中,我仍然需要在設計時包含一個參考_EmailFeebackService_(或者,在我的情況下,_MyModuleA_) 在我的ConfigureModuleCatalog中,我該怎麼寫: Container.RegisterType( ); 仍然只添加對_IMyModuleA_的引用? –
a11smiles
此外,這不一定是一項服務,而是一個模塊,如果這有所作爲。 – a11smiles
我認爲DI的全部重點是**而不是**必須提供具體的類,只是界面?然後我在運行時簡單地將具體類的DLL添加到項目中。既然它正在實現一個接口,我應該只能調用feedbackService.MyMethod(),它只會調用具體類的方法。 使用上面的方法,我仍然需要添加對具體EmailFeedbackService的引用,這意味着(並糾正我,如果我錯了),當我重新編譯EmailFeedbackService,我需要重新編譯應用程序... – a11smiles