Autofac 在注册这样的组件时找到“最佳”ctor
builder.RegisterType<MyType>()...;
or
builder.RegisterType(typeof(MyType))...;
我正在寻找一种方法来重用 Autofac 的反射代码来查找 ctor 参数。这个逻辑在某些公共 API 中可用吗?
我想要上面的原因...
我在编译时有一些类型未知的组件(=动态代理)。目前我像这样注册它们
builder.Register(c =>
{
var dep1 = c.Resolve<IFoo>();
var dep2 = c.Resolve<IBar>();
var dep3 = c.Resolve<IFooBar>();
return someProxyFactory.CreateProxyFrom<MyType>(dep1, dep2, dep3);
}...;
---编辑---
如果不涉及代理但无法使用 RegisterType,则相同的问题是有效的。例如...
builder.Register(c =>
{
[...]
if(something)
return new SomeType(dep1, dep2, dep3);
else
return new SomeOtherType(dep1, dep4, dep2, dep5);
}
在这里,如果可能的话,我还想重用 Autofac 的“查找 ctor 逻辑”。
---结束编辑---
它工作正常,但如果可能的话,我想使用 autofac 的逻辑来为我找到 ctor 依赖项。我想写类似的东西
builder.Register(c =>
{
object[] ctorDependencies = letAutofacDoTheSimilarWorkAsInRegisterType(typeof(MyType));
return someProxyFactory.Create<MyType>(ctorDependencies);
}
这是可能的还是我必须为此编写自己的逻辑?或者是否有一些完全不同的方法可用于这种情况?