我遇到过几篇文章,其中一个接口由多个类实现,并且依赖项已注册和解析。一篇这样的帖子就是这个。
但是如何解决多个、多层次的依赖关系呢?
例如:
public enum ShortEnum { Short, Long }
public interface ISomeValidator
{
bool ValidateInputString(string str);
}
public class ConValidator : ISomeValidator
{
public bool ValidateInputString(string str) => true;
}
public class DonValidator : ISomeValidator
{
public bool ValidateInputString(string str) => false;
}
public class ConProvider : ISomeProvider
{
ISomeValidator conValidator; // Expects instance of ConValidator
public ConProvider(ISomeValidator someValidator)
{
conValidator = someValidator;
}
}
public class DonProvider : ISomeProvider
{
ISomeValidator donValidator; // Expects instance of DonValidator
public DonProvider(ISomeValidator someValidator)
{
donValidator = someValidator;
}
}
ShortEnum
可以用作键。这意味着根据它的值,返回ConProvider
或DonProvider
返回。现在,提供者对 有依赖关系ISomeValidator
,这又取决于 的键值ShortEnum
可以解析为ConValidator
or的实例DonValidator
。
换句话说,我想构建以下两个对象图:
var provider1 = new ConProvider(new ConValidator());
var provider2 = new DonProvider(new DonValidator());
使用 .NET Core 3.1 内置依赖注入机制的最佳方式是什么?