不同的枚举值的不同实现

时间:2019-02-13 22:29:29

标签: c# .net-core

我有一个与设计更多相关的问题。我正在为我的类编写验证器,并且我想让另一个说说保存逻辑而不是更新逻辑的滑动器。所以我正在创建一个界面,应该像 接口 IObjectValidator> ObjectToValidate,ValidationForMethod << / strong>,并且不确定如何使用该工具来执行类似 UserValidatorForSave的操作:IObjectValidator> User,ValidationMethod.Save << / strong> 我知道这没有多大意义,但是请提出一个解决方案,让我可以做类似的事情。

1 个答案:

答案 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,它将为您的工厂方法提供信息,以便您的工厂方法知道要解决的问题。