我正在使用autofac。到目前为止,我通过构造函数注入解决了所有依赖项。
有一种情况我被卡住了:
考虑给定的客户类别:
public class Customer : ICustomer
{
public string Name { get; set; }
private int ExternId { get; set; }
public IExternalIdProvider externalIdProvider { get; set; }
public Customer()
{
this.externalIdProvider = new ConcreteIdProvider(this);
}
public BevorSave()
{
this.ExternId = externalIdProvider.GetNextId();
}
}
为了根据请求或 gui 操作创建新的客户对象。我使用新的运算符。但是 - 我想注入的 CustomerClass 中有一个 IdProvider。(作为财产)。
如果客户将由 ioC 容器解决,我将使用如下配置:
builder.RegisterType<ConcreteIdProvider>().As<IExternalIdProvider>();
builder.RegisterType<Customer>().As<ICustomer>()
.OnActivated(ae =>
{
IExternalIdProvider idProvider =
ae.Context.Resolve<IExternalIdProvider>(TypedParameter.From(ae.Instance));
ae.Instance.externalIdProvider = idProvider;
});
我的问题是:如何在客户中注入 ExternalIdProvider 的行为?(使用自动法)
本文展示了一个示例,如何使用服务定位器完成此操作:http: //blogs.msdn.com/b/simonince/archive/2008/06/30/dependency-injection-is-dead.aspx
谢谢你的帮助。