我有一个带有以下 Initialize() 方法的CustomersModule.cs :
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";
}
}
然而,即使我从未注册过容器,容器也会愉快地解析 ,并且容器也会以某种方式找到TestWhatever,实例化它并将其注入.CustomersPresenter
CustomersPresenter
我很惊讶地意识到这一点,因为我在 Prism 文档中找不到任何地方明确指出容器是如此自动化。
所以这很好,但是容器还做了什么我不知道的事情,即它还能做什么我不知道的事情?例如,我是否可以从其他模块注入类,如果模块恰好被加载,容器将注入它们,如果没有,它会注入 null?