C# Autofac-未注册类型时的回调

C# Autofac-未注册类型时的回调,c#,autofac,C#,Autofac,有可能吗? 我想实现这样的目标 cntBld.RegisterNotRegisteredCallback(type => return /* custom factory of type */); 我的意思是-如果类型不是注册的explicite,我想创建自己的实例。您提到的外部工厂是否使用Autofac?如果不是,你的问题就没有意义,解决办法是: builder.Register(c => externalFactory.Instance).As<Whatever>(

有可能吗? 我想实现这样的目标

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

我的意思是-如果类型不是注册的explicite,我想创建自己的实例。

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

builder.Register(c => externalFactory.Instance).As<Whatever>();
builder.Register(c=>externalFactory.Instance.As();
如果您提到的外部工厂使用Autofac,则外部实例应可由传递到Register方法的组件上下文解析:

builder.Register(c => {
    var externalThing = c.Resolve<IExternalThing>() ?? new ExternalThing();
    return externalThing;
}).As<Whatever>();
builder.Register(c=>{
var externalThing=c.Resolve()??new externalThing();
回归外在事物;
}).As();

如果您可以创建一个实例……为什么不先创建并注册它呢?因为某些特定实例是由外部工厂创建的。我希望避免在许多程序集中手动注册许多类型。在温莎,我可以使用SubDependencyResolver。但我在autofac中找不到类似的选项。这对我来说仍然没有意义。如果您提前知道需要哪些依赖项,就可以注册它们,而不必处理笨重的体系结构。@mason不必讲道理;)我只是要求在其他容器(如Windsor)中实现特定的Autofac功能,我下次会要求提供架构。是的,它必须有意义。您是否希望在坚实的体系结构原则基础上编写良好的代码,并且工作良好?或者你只是想写一些脆弱、低效、有点“正常”的代码?您似乎在询问XY问题。