我有一个与设计更多相关的问题。我正在为我的类编写验证器,并且我想让另一个说说保存逻辑而不是更新逻辑的滑动器。所以我正在创建一个界面,应该像 接口 IObjectValidator> ObjectToValidate,ValidationForMethod << / strong>,并且不确定如何使用该工具来执行类似 UserValidatorForSave的操作:IObjectValidator> User,ValidationMethod.Save << / strong> 我知道这没有多大意义,但是请提出一个解决方案,让我可以做类似的事情。
答案 0 :(得分:1)
您是否正在寻找类似的东西?
class ValidatorInitializer
{
public IObjectValidator Initialize(MyEnumType myEnum)
{
IObjectValidator validator = null;
switch (myEnum)
{
case MyEnumType.Case1 :
validator = new UserValidatorForSave() ;
break;
case MyEnumType.Case2 :
validator = new UserValidatorForUpdate();
break;
}
return validator;
}
}
然后以这种方式使用
var validator = (new ValidatorInitializer()).Initialize(myEnum);
具有依赖项注入
services.AddScoped<IObjectValidator>(provider =>
{
var enumResolverService = provider.GetRequiredService<IEnumResolverService>();
return (new ValidatorInitializer()).Initialize(enumResolverService.MyEnum));
}
您需要一个IEnumResolverService
,它将为您的工厂方法提供信息,以便您的工厂方法知道要解决的问题。