我正在开发一个中型 WPF 应用程序 (MVVM),该应用程序将来应该是可扩展和可维护的。因此,我决定使用 IoC 容器(在本例中为 Unity)来保持灵 active 。
但是我不确定在 WPF 应用程序中的何处放置和配置 Unity。
我猜容器应该可以全局访问,所以它可能应该进入应用程序类。但我应该将其设为静态属性吗?我应该在 Application_Startup() 事件处理程序中配置它吗?
例如:
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
public static UnityContainer MyUnityContainer;
private void Application_Startup(object sender, StartupEventArgs e)
{
// instantiate and configure Unity
}
}
这样我就可以通过静态属性从应用程序中的任何位置访问容器:
App.MyUnityContainer
我想这是一种方法,但我不确定是否有更好的做法来解决这个问题,特别是对于 WPF 应用程序。
最佳答案
看看 Composition Root Pattern 。您要做的就是在 Startup 事件处理程序中初始化它,并在应用程序的其余部分中忘记它的存在。
您正在尝试实现 Service Locator Pattern ,根据许多is an inferior solution对于这个问题。
关于wpf - 在 WPF 应用程序中何处放置和配置 IoC 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372463/