我正在更新工作验证系统,遇到了一个有趣的问题。
基本上我需要验证属于特定成本中心的经纪人是否可以跳过部分验证。
数据库关系是一对多,一个成本中心可以有多个经纪商。 简而言之,我的代码看起来像这样:
private void Validate()
{
var broker = "Broker";
if (!DoesBrokerBelongToSpecificCostCenter(broker))
{
// Validate something
}
}
对于属于特定成本中心的经纪商,我想跳过部分验证。对我来说,问题是找出一种正确且干净的方法来检查经纪人是否属于这些特定成本中心之一。因为可能有大约 1000 个不同的成本中心,但只有 1 或 2 个需要跳过此验证。除了使用这些特定成本中心硬编码 if 语句之外,我真的想不出任何东西。
private bool DoesBrokerBelongToSpecificCostCenter(string brokerCostCenter)
{
return brokerCostCenter == "Cost center 1" || brokerCostCenter == "Cost center 2" ;
}
目前我没有比硬编码更好的方法来处理这个问题。不,我无法更改现有的数据库结构来为成本中心添加一列,我可以在其中存储是否需要跳过验证。有没有办法通过配置文件来做到这一点?
只需使用集合来存储您的特定成本中心经纪人:
public class Broker
{
private static readonly string[] _specificCostCenterBroker = {"Cost center 1", "Cost center 1"};
private static bool DoesBrokerBelongToSpecificCostCenter(string brokerCostCenter)
{
return _specificCostCenterBroker.Contains(brokerCostCenter, StringComparer.Ordinal);
}
// add rest incl. your Validate method
}
如果您想以不区分大小写的方式进行比较,请使用
OrdinalIgnoreCase