Autofac认为“最好”的构造函数。这种逻辑在某些公共API中可用吗?重用autofac的发现男星逻辑
我想以上的原因...
我有未知的类型在编译时(=动态代理)的一些组件。目前我注册他们这样
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的逻辑找到构造函数依赖我。我想写点类似于
builder.Register(c =>
{
object[] ctorDependencies = letAutofacDoTheSimilarWorkAsInRegisterType(typeof(MyType));
return someProxyFactory.Create<MyType>(ctorDependencies);
}
这是可能的还是我必须写我自己的逻辑呢?或者,这种方案有一些完全不同的方法吗?
为什么这些类型有多个公共构造函数呢?这意味着在选择它们之间存在不明确之处,并且在进行依赖注入时可以将其视为设计异味。确保每个组件都只有一个公共构造函数,问题就消失了。 – Steven
为什么认为他们有多个公共机构?他们没有。我正在寻找一种让编译时instanciated类型未知的autofac也能找到依赖关系的方法。 – Roger
我的歉意,我误解了你的问题。 – Steven