c# - 不同枚举值的不同实现
问题描述
我有一个与设计更相关的问题。我正在为我的课程编写验证器,并且我想要一个不同的验证器来让我们说保存逻辑而不是更新逻辑。所以我正在创建一个接口,它应该类似于接口IObjectValidator>ObjectToValidate, ValidationForMethod<并且不确定我可以做什么来执行类似UserValidatorForSave : IObjectValidator>User, ValidationMethod.Save< 我知道这没有多大意义但很友好建议一个我可以做类似事情的解决方案。
解决方案
你在寻找这样的东西吗?
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
将为您的工厂方法提供信息的方法,以便您的工厂方法知道要解决的问题。
推荐阅读
- java - How to display a row from a database?
- c++ - CMake:如何添加不是“链接”依赖项的依赖项
- mysql - 从字符串中提取特定值(MYSQL)
- c# - 在坐标系中旋转一条线
- c# - 是否可以在没有锁但使用 volatile 的情况下实现单例设计模式?
- axapta - 如何通过 Excel 从 MS Dynamic AX 的 AOT 中获取数据
- c# - 在 C# 中的串行通信中按下一个键时消除延迟
- mysql - 选择平均值小于指定值的所有条目
- javascript - 如果数组项包含字符串但不包含其他字符串,则删除字符串
- android - 导航组件 - 未生成方向类