我已经使用.Net语言4年了。我使用WCF、ASP.NET来开发3层和5层应用程序,同时也使用C#来开发Windows应用程序。每次我开始一个项目时,业务规则和验证是一个问题。
那么我应该把自定义验证规则放在哪里(按钮点击事件、页面加载或者在我的类的setter/getter中)?
如果一个项目很大,只有一个字段需要从5个字符变成7个字符——为什么我要重建整个项目(或商业类项目)?
我认为如果我有一个文件来存储我的自定义规则,那么当需要更改时,我可以简单地将新规则放在其中。我在互联网上阅读了一些文章,提供了基于XML的文件来完成此目的,但这似乎有问题,因为:
- 没有智能提示,并且XML文件中的错误很难找到 - 我们必须编写自定义XML解析器 - 由于此方法需要大量转换,所以速度非常慢
我的问题是:是否有设计模式或使用.NET方法(反射、表达式树、Lambda表达式、动态、DLL的运行时创建等)来使用自定义规则进行动态验证?
编辑1) 属性呢?我们可以结合反射使用它们进行自定义验证吗?使用此方法,我们可以根据另一个属性(例如P1应为P2+1)验证属性吗?
那么我应该把自定义验证规则放在哪里(按钮点击事件、页面加载或者在我的类的setter/getter中)?
如果一个项目很大,只有一个字段需要从5个字符变成7个字符——为什么我要重建整个项目(或商业类项目)?
我认为如果我有一个文件来存储我的自定义规则,那么当需要更改时,我可以简单地将新规则放在其中。我在互联网上阅读了一些文章,提供了基于XML的文件来完成此目的,但这似乎有问题,因为:
- 没有智能提示,并且XML文件中的错误很难找到 - 我们必须编写自定义XML解析器 - 由于此方法需要大量转换,所以速度非常慢
我的问题是:是否有设计模式或使用.NET方法(反射、表达式树、Lambda表达式、动态、DLL的运行时创建等)来使用自定义规则进行动态验证?
编辑1) 属性呢?我们可以结合反射使用它们进行自定义验证吗?使用此方法,我们可以根据另一个属性(例如P1应为P2+1)验证属性吗?
property1
上定义自定义属性,以便将其与同一实例的property2
相关联。但是这种方法很复杂,会导致硬编码到依赖规则。 - Devendra D. Chavan