Я хочу поделиться контейнером между различными слоями в своем приложении. Я начал создавать статический класс, который инициализирует контейнер и регистрирует типы в контейнере.
public class GeneralDIModule : NinjectModule
{
public override void Load()
{
Bind<IDataBroker>().To<DataBroker>().InSingletonScope();
}
}
public abstract class IoC
{
private static IKernel _container;
public static void Initialize()
{
_container = new StandardKernel(new GeneralDIModule(), new ViewModelDIModule());
}
public static T Get<T>()
{
return _container.Get<T>();
}
}
Я заметил, что есть метод Resolve. В чем разница между Resolve и Get?
В своих модульных тестах я не всегда хочу, чтобы каждый зарегистрированный тип был в моем контейнере. Есть ли способ инициализировать пустой контейнер, а затем зарегистрировать нужные мне типы. Я также буду издеваться над типами в модульном тесте, поэтому мне также придется зарегистрировать их.
Существует метод Inject, но он говорит, что жизненный цикл экземпляра не управляется?
Может ли кто-нибудь поставить меня в правильном направлении?
Как я могу зарегистрировать, отменить регистрацию объектов и сбросить контейнер.