首页 > 解决方案 > 不同枚举值的不同实现

问题描述

我有一个与设计更相关的问题。我正在为我的课程编写验证器,并且我想要一个不同的验证器来让我们说保存逻辑而不是更新逻辑。所以我正在创建一个接口,它应该类似于接口IObjectValidator>ObjectToValidate, ValidationForMethod<并且不确定我可以做什么来执行类似UserValidatorForSave : IObjectValidator>User, ValidationMethod.Save< 我知道这没有多大意义但很友好建议一个我可以做类似事情的解决方案。

标签: c#.net-core

解决方案


你在寻找这样的东西吗?

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


推荐阅读