У меня есть CustomersModule.cs со следующим методом Initialize ():
public void Initialize()
{
container.RegisterType<ICustomersRepository, CustomersRepository>(new ContainerControlledLifetimeManager());
CustomersPresenter customersPresenter = this.container.Resolve<CustomersPresenter>();
}
класс, который я разрешаю из контейнера, выглядит так:
class CustomersPresenter
{
private CustomersView view;
private ICustomersRepository customersRespository;
public CustomersPresenter(CustomersView view,
ICustomersRepository customersRepository,
TestWhatever testWhatever)
{
this.view = view;
this.customersRespository = customersRepository;
}
}
Класс TestWhatever - это просто созданный мной фиктивный класс:
public class TestWhatever
{
public string Title { get; set; }
public TestWhatever()
{
Title = "this is the title";
}
}
Тем не менее, контейнер успешно разрешает CustomersPresenter
, хотя я его никогда не регистрировал, а также контейнер каким-то образом находит TestWhatever, создает его и внедряет в CustomersPresenter
.
Я был очень удивлен, узнав об этом, так как я не нашел нигде в документации Prism, в которой прямо говорилось бы, что контейнер был таким автоматическим.
Так что это здорово, но что еще делает контейнер, о чем я не знаю, то есть что еще он может делать, о чем я не знаю? Например, могу ли я внедрить классы из других модулей, и если модули будут загружены, контейнер будет внедрять их, а если нет, он будет вводить ноль?