Castle Validator使用属性指定验证规则。如何将这些与子系统生成的类(或任何无法定义属性的类)挂钩?有没有办法在不使用属性方法的情况下以编程方式指定验证规则?
答案 0 :(得分:2)
我认为最好的方法是使用MetadataType
。
这是一个DataAnnotations
让你的班级就像一对或类似的东西。我不知道如何更好地解释它,让我们来样品:
首先需要将此指令添加到您的代码中:
using System.ComponentModel.DataAnnotations;
你应该创建你生成的类的部分类,其中的属性指定该类具有MetadataType
:
[MetadataType(typeof(UserMetadata))]
public partial class User
{
}
然后使用城堡验证创建元数据类:
public class UserMetadata
{
[ValidateNonEmpty]
[ValidateLength(6, 24)]
public string Username { get; set; }
[ValidateNonEmpty]
[ValidateLength(6, 100)]
[ValidateEmail]
public string Email { get; set; }
[ValidateNonEmpty]
[ValidateLength(6, 24)]
public string Password { get; set; }
}
希望有所帮助
答案 1 :(得分:0)
有几种方法可以做到这一点 - 属性是最低摩擦选项,但显然不能很好地处理生成的代码或在代码中更好地表达的多个属性的验证。
请查看以下链接,了解有关如何撰写此博文的一些说明:Castle Validator Enhancements
如果您查看城堡源代码,这些是一些很好的起点:
希望有所帮助。