以某种方式可以将函数发送到另一个函数来运行它。 例如......我希望在一个字段上有一个属性,我可以在其中指定一个方法,该方法将被发送到另一个传入方法的方法。
不确定这是否有意义,但这是一个小例子。
[ValidateIf(x=>x.test())]
public string test { get; set; }
更新 基本上我想使用DataAnnotations进行验证,但有时根据系统设置,字段可能不是强制性的......你对我应该的方向有什么建议吗?
答案 0 :(得分:3)
不幸的是,您不能将委托用作属性的属性。您必须指定方法名称,然后在执行时使用反射创建委托 - 这在编译时查找拼写错误显然不太理想。
可能在IL中可能<(使用等效于MethodInfo
指定typeof
)但C#不会暴露任何方式这样做:(也许有一天我们将得到infoof
运算符......它是如何公开的,我不确定。(将代理类型信息保存在属性中会很好。)
答案 1 :(得分:0)
我不知道这是否符合您的具体目标,但总的来说,如果您希望为您的语言添加数据注释,我建议您查看Spec#。这是C#语言的扩展,允许您向程序添加数据合同,并且似乎可以实现您正在寻找的目标。
答案 2 :(得分:0)
如果您要为域对象添加验证,可以查看NHibernate Validator。
http://nhibernate.info/doc/validator/nhibernate-validator-1-0-0-documentation.html