Autofac - 未注册类型时的回调

时间:2017-11-29 14:55:35

标签: c# autofac

有可能吗? 我想做到这样的事情;

cntBld.RegisterNotRegisteredCallback(type => return /* custom factory of type */);

我的意思是 - 如果type没有注册explicite我想创建自己的实例。

1 个答案:

答案 0 :(得分:0)

您提到的外部工厂是否使用Autofac?如果没有,你的问题没有意义,解决方案是:

builder.Register(c => externalFactory.Instance).As<Whatever>();

如果您提到的外部工厂使用Autofac,则外部实例应该可以通过传递给Register方法的组件上下文进行解析:

builder.Register(c => {
    var externalThing = c.Resolve<IExternalThing>() ?? new ExternalThing();
    return externalThing;
}).As<Whatever>();