Я работаю над 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.