Я работаю над средним WPF-приложением (MVVM), которое должно быть расширяемым и поддерживаемым в будущем. Таким образом, я решил использовать контейнер IoC (Unity в этом случае), чтобы поддерживать гибкость.
Однако я не уверен, где разместить и настроить Unity в приложении WPF.
Я предполагаю, что контейнер должен быть доступен глобально, поэтому он должен, вероятно, перейти к классу Application. Но должен ли я сделать это как статическое свойство? Должен ли я настраивать его в обработчике событий 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.