如何为属性属性创建包装器?

时间:2010-01-13 23:26:16

标签: c# attributes wrapper

在ASP.NET MVC中,我们可以使用System.ComponentModel.DataAnnotations命名空间来协助表单/模型输入验证。

如果我不想被绑定到任何特定的框架,即xVal,EntLib Val Block等,我想基本上创建一个包装类来保护我的代码免受直接依赖,如何实现呢?

所以代替我的模型属性看起来像这样;

[Required]
property string Name {get;set;}

我希望它与我的代码相关联,在那里将实现首选的验证框架。

[MyRequired]
property string Name {get;set;}

1 个答案:

答案 0 :(得分:1)

一种方法是从底层属性派生属性。 EG:

public class MyRequiredAttribute : EntLib.RequiredAttribute { }

通过这种方式,您可以稍后修改MyRequiredAttribute类以从不同的基类派生,而其余代码则无需更改(您可能需要重新编译它)。扫描EntLib.RequiredAttribute的EntLib(etc)代码仍应选择您的派生属性

这依赖于未被密封的基础属性。