.Net-мудрый, я застрял в 2005 году до недавнего времени. Я знаю, что мне нужно многое наверстать, но поскольку мне не нравится неэффективный код, следующий фрагмент кода (в конце этого вопроса) из учебника SimpleInjector поставил меня в тупик.
Проблема заключается в методе BootStrapper()
, который используется для инициализации статического контейнера SimpleInjector.
В этом методе объявляется var container
и назначается новый Container()
. В конце метода область действия метода container
назначается статической переменной container
уровня приложения.
Почему это делается именно так? Должна быть веская причина для назначения контейнера сначала локальной переменной var, а затем, наконец, назначению var статической переменной Container на уровне класса. Мне это кажется очевидным, избыточным назначением, но если это так, то я сомневаюсь, что кто-то будет делать это таким образом. Что мне не хватает?
Код ниже взят из кода из документации SimpleInjector. Я понимаю все, что делает код, я просто не понимаю смысла этого дополнительного назначения var
.
using System.Windows;
using SimpleInjector;
public partial class App : Application
{
private static Container container; //<-- The static, class-level variable.
// Why not assign to it from the get-go?!
//...snip...
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Bootstrap();
}
private static void Bootstrap()
{
// Create the container as usual.
var container = new Container(); //What's the point of this var?
// Register your types, for instance:
container.RegisterSingle<IUserRepository, SqlUserRepository>();
container.Register<IUserContext, WpfUserContext>();
// Optionally verify the container.
container.Verify();
// Store the container for use by the application.
App.container = container; //Couldn't we have done this from line 1 of this method?
}
}
Источник: SimpleInjector — Руководство по интеграции Windows Presentation Foundation