C# 基于场景的查询:跳过类的验证而不使用IF条件

C# 基于场景的查询:跳过类的验证而不使用IF条件,c#,scenarios,C#,Scenarios,假设您有以下类:Class1,Class2Class1000。 所有类都继承接口IClass。 所有的类都可以使用下面的代码进行验证 Validate(IClass class) { } 如果不使用if条件,我们如何将类200的验证跳过到类300(这些数字可能会变化,因此没有使用数字的逻辑)?我个人会将验证检查移动到模型中 例如 然后,在每节课上: public class Class200 { public bool ShouldValidate() => false; //

假设您有以下类:
Class1
Class2
<代码>Class1000。 所有类都继承接口
IClass
。 所有的类都可以使用下面的代码进行验证

Validate(IClass class) 
{

}

如果不使用if条件,我们如何将类200的验证跳过到类300(这些数字可能会变化,因此没有使用数字的逻辑)?

我个人会将验证检查移动到模型中

例如

然后,在每节课上:

public class Class200
{
  public bool ShouldValidate() => false; // because whatever
}
然后在您的验证中:

public void Validate(IClass class)
{
    if(class.ShouldValidate())
    {
        // do whatever
    }
}
这样,逻辑就属于
IClass
实例,任何愿意扩展它的人都知道如何实现异常

另外,对于类200-300,您可以从一个公共基类继承它们,该基类总是返回
false
以获得一个干式模式

更新另一个选项是将validate直接放入类中,例如:

public interface IClass{

    void Validate();
}
然后在类200-300中只保留该方法为空,例如

public class Class200
{
  public bool Validate()
  {
  }
}
并在需要时实施

public class Class1
{
  public bool Validate()
  {
   // do awesome things here
  }
}

就我个人而言,我会将您的验证检查移到模型中

例如

然后,在每节课上:

public class Class200
{
  public bool ShouldValidate() => false; // because whatever
}
然后在您的验证中:

public void Validate(IClass class)
{
    if(class.ShouldValidate())
    {
        // do whatever
    }
}
这样,逻辑就属于
IClass
实例,任何愿意扩展它的人都知道如何实现异常

另外,对于类200-300,您可以从一个公共基类继承它们,该基类总是返回
false
以获得一个干式模式

更新另一个选项是将validate直接放入类中,例如:

public interface IClass{

    void Validate();
}
然后在类200-300中只保留该方法为空,例如

public class Class200
{
  public bool Validate()
  {
  }
}
并在需要时实施

public class Class1
{
  public bool Validate()
  {
   // do awesome things here
  }
}

您需要显示哪些代码决定调用
Validate()
以及
Validate()
是否可以移动到类本身。您需要显示哪些代码决定调用
Validate()
以及
Validate()
是否可以移动到类本身。明白您的意思了。但我们能否提出一种方法,在验证方法中不使用条件@Venkatesan这取决于您在
验证中执行的其他操作
@Venkatesan检查我的更新,不确定这是否是您的意思。让类自己进行验证对我来说似乎是最好的选择。@Chris这取决于其他逻辑的强度,该类是否用作可序列化的DTO/模型,以及验证可能有多少依赖项。在OPs问题的背景下-当然。不过,我永远不会在我的api模型中使用验证方法——只使用属性。明白你的意思了。但我们能否提出一种方法,在验证方法中不使用条件@Venkatesan这取决于您在
验证中执行的其他操作
@Venkatesan检查我的更新,不确定这是否是您的意思。让类自己进行验证对我来说似乎是最好的选择。@Chris这取决于其他逻辑的强度,该类是否用作可序列化的DTO/模型,以及验证可能有多少依赖项。在OPs问题的背景下-当然。不过,我永远不会在我的api模型中使用验证方法——只使用属性。