是否可以统一尝试所有已定义的构造函数,从参数最多的构造函数到最不具体的构造函数(默认构造函数)?
编辑
我的意思是说:
foreach (var constructor in concrete.GetConstructorsOrderByParameterCount())
{
if(CanFulfilDependencies(constructor))
{
UseConstructor(constructor);
break;
}
}
我不希望 Unity 只尝试使用大多数参数的构造函数。我希望它继续尝试,直到找到合适的构造函数。如果 Unity 默认不提供这种行为,是否可以创建扩展或其他东西来做到这一点?
编辑 2
我有一个有两个构造函数的类:
public class MyConcrete : ISomeInterface
{
public MyConcrete (IDepend1 dep, IDepend2 dep2)
{}
public MyConcrete(IDepend1 dep)
{}
}
该类存在于多个项目使用的库中。在这个项目中,我想使用第二个构造函数。但是 Unity 停止了,因为它无法满足第一个构造函数的依赖关系。而且我不想更改类,因为 DI 在其他项目中使用了第一个构造函数。
因此,Unity 需要尝试解析所有构造函数。