如果是这样,则该样式规则在类上

霍拉汉

我想要做的是有一套针对财产的规则,所以说我有课:

 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,则更改 DeliveryCode = "NextDay"

如果客户 = "ABC123" 更改 DeliveryCode = "PalletNextDay"

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

Abion47

您可以将规则存储在数据文件中。例如,在 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类,使用查找表或反射来动态获取/设置数据。

你知道,只是作为一个例子。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查段落是否以字符开头,如果是,则在其上应用HTML样式

是否可以在FreeBSD上本地存储可用`pkg`安装的软件包列表?如果是这样,如何更新该缓存?

用户定义的转换是否不明确?如果是这样,什么规则允许呢?

声明不带const的C样式字符串是否不好?如果是这样,为什么?

如果是PUT或DELETE请求,则在任何http请求上都会发生“连接重置”

检查X = Y,如果是,则在Z div上使用CSS

Dispatch_once创建的单例可以发布吗?如果是这样,该如何处理?

数组元素需要可变吗?如果是这样,我该怎么做?

是否可以自定义群端口?如果是这样,该怎么做?

magento中的哈希密码功能是否已更改?如果是这样,该怎么办?

这是某种自动完成功能吗?如果是这样,我该如何利用它?

我可以设置对象的键值对函数的调用吗?如果是这样,我该如何称呼它?

引用样式语言“如果是”

如果为空,则在prev()上设置类(jQuery)

是否可以让Ant打印出特定目标的类路径?如果是这样,怎么办?

是否可以从另一个类的方法覆盖动态方法?如果是这样,如何?

使用类的方法更新类变量的实例是否正确?如果是,该怎么办?

在Retrofit2上,如果来自服务器的json是这样的,我该如何设置json类?

是否可以同时应用nftable和iptables / ip6tables规则?如果是这样:优先顺序是什么?

iOS上是否已弃用AUGraph?如果是这样,什么时候?

是否可以在 ubuntu 18.04 上安装 nemo-compare?如果是这样,如何?

我是否必须在新的HDD / SSD上设置BIOS?如果是这样,怎么办?

我可以在Ubuntu GNOME上安装Cinnamon DE吗?如果是这样,怎么办?

是否可以在TextCtrl上绘制?如果是这样,怎么办?

是否可以在Android上开发自定义API?如果是这样,怎么办?

VS 2013中“ Zither字符串”的颜色是否表示某些东西?如果是这样,该怎么办?

我应该在Go中封装切片和地图吗?如果是这样,该怎么办?

管道运算符是否会将数据帧变成小标题?如果是这样,我该如何预防呢?

是否可以依次逐个启动各种物联网边缘模块?如果是这样,该怎么办?