Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果该样式在类中起规则作用,则该样式在类中起规则作用_C# - Fatal编程技术网

C# 如果该样式在类中起规则作用,则该样式在类中起规则作用

C# 如果该样式在类中起规则作用,则该样式在类中起规则作用,c#,C#,我想做的是制定一套规则来反对财产,比如说我有阶级: public class OrderHeader { public string OrderNumber { get; set; } public string Customer { get; set; } public string PlainLabel { get; set; } public string DeliveryCode { get;

我想做的是制定一套规则来反对财产,比如说我有阶级:

 public class OrderHeader
    {           
        public string OrderNumber { get; set; }
        public string Customer { get; set; }
        public string PlainLabel { get; set; }
        public string DeliveryCode { get; set; }
        public string Name { get; set; }
        public string Address1 { get; set; }
        public string Address2 { get; set; }
        public string Address3 { get; set; }
        public string Address4 { get; set; }
        public string PostCode { get; set; }    
    }
我想为类创建某种规则,并将其存储在某种SQL数据库或XML文件中,例如:

如果客户=“ZZZ999”和邮政编码=“PO4 9BQ”且PlainLabel=1,则更改交货代码=“NextDay”

如果客户=“ABC123”更改交货代码=“PalletNextDay”


我可以在每次编写代码时将其作为类中的if语句,但我正在寻找一些更具动态性的东西,可以在源代码之外完成。我想不出一种方法可以实现这一点。

您可以将规则存储在数据文件中。例如,在XML格式中,它可以如下所示:

<Ruleset>
    <Rule>
        <Condition Property="Customer" Value="ZZZ999" />
        <Condition Property="PostCode" Value="PO4 9BQ" />
        <Condition Property="PlainLabel" Value="1" />
        <Set Property="DeliveryCode" Value="NextDay" />
    </Rule>
    <Rule>
        <Condition Property="Customer" Value="ABC123" />
        <Set Property="DeliveryCode" Value="PalletNextDay" />
    </Rule>
</Ruleset>

然后您可以使用一些类
RuleManager
,该类将数据读入
Rule
对象列表,然后检查/应用规则到给定的
OrderHeader
类,使用查找表或反射动态获取/设置数据


举个例子。

如果“DeliveryCode”是要计算的动态字段,请在DeliveryCode属性的getter方法中实现您的逻辑。是的,您可以在xml中有一些规则集,并且可能可以在实例化该类时加载xml,也可以将其放在单独的类中,并可以在多个类中共享。您可以将规则集保存为(例如)xml节点,其中包含一个结果子级和多个条件子级。然而,实际上并没有一种方法可以做到这一点,所以这个问题可能因为过于宽泛而结束。