我对使用Unity Framework的依赖注入几乎没有任何疑问 1>每个类总是需要默认构造函数吗? 2>我们如何注册一个在注册时不知道其依赖类的类,但在后一阶段它将变为avialble。 3>一旦这个依赖类在后一阶段可用,我该如何分配它
例如,我在注册时不知道客户的地址,但地址将在流程的后期知道。我在Global.ascx文件(应用程序启动)中使用Unity容器注册Customer类,我不知道地址。public class Customer : IPerson<Customer>
{
private Address _address;
public Customer(Address address)
{
_address = address;
}
}
答案 0 :(得分:1)
在实体上使用依赖注入是不的典型事情。实体(例如Customer
和Person
)通常是包含数据而不是行为的更短寿命的对象,因此不适合依赖注入。
通常,您应该使用某种工厂来创建无法由容器管理的短期对象,或者在您的情况下,使用repository pattern。将ICustomerRepository
注入需要处理Customers
的服务。
回答您的其他问题:
每个类总是需要默认构造函数吗?
不,它没有。作为一般准则,最好为用作服务组件的类(系统中包含行为的类)使用单个公共构造函数,但它不必是默认构造函数。
我们如何注册一个其依赖类未知的类 注册时间,但在后期会变得很有用。
一般情况下,您会注入一个工厂,或者在某些情况下,您可以注入一个知道如何在以后创建真实对象的代理。