我的任务是创建一个UI容器,其中将自动从DLL加载不同的UI。这些UI或视图将遵循通用界面。在程序集中还将显示有关要显示为树视图的设置的信息。使用WPF在c#中创建此类解决方案的最佳实践是什么?棱镜似乎是要走的路 - 你同意吗?
答案 0 :(得分:0)
棱镜的优点是,它是众所周知的,如果你遵循这些做法,你可以参考棱镜文档。我会说,这里的优点结束了。
您可以使用像Unity或MEF这样的IoC容器来加载模块并向模块注入一些IApplicationContext实现。然后,您的模块将向ApplicationContext注入内容。这里不需要棱镜。
让我们假设您的模块由IModuleImplementation标识:
public interface IModule
{
void Initialize(IApplicationContext applicationContext);
}
在你的应用程序bootstrapp你的模块:
public void Bootstrap()
{
var applicationContext = new ApplicationContext();
IModule[] modules = LoadModulesFromDirectoryAssemblies();
foreach (var module in modules)
{
module.Initialize(applicationContext);
}
}
并且模块将注入所需的任何内容:
public class Module1 : IModule
{
public void Initialize(IApplicationContext applicationContext)
{
//inject Module1 services, views, menuitems, command etc. to applicationContext.
}
}
然后,您的shell窗口将在应用程序上下文中注入内容并在UI中反映出来。