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