我想知道是否可以验证(custom).net属性的参数。例如:如果我的属性采用正整数,那么在提供负值时是否可以强制编译时错误?
[DonkeyAttribute(1)] //确定
[DonkeyAttribute(-828)] //错误
在这个例子中,我可以使用无符号整数(但这是非cls兼容我相信?) 建议?
答案 0 :(得分:1)
您可以通过单元测试来强制执行此操作;类似于我为this question建议的解决方案,也许。
答案 1 :(得分:0)
答案 2 :(得分:0)
直接?不。不是没有重写csc或vbc。大多数人会在运行时执行所述验证。
然而,谷歌搜索了一下blog entry on PostSharp Aspects。它在技术上不会从编译器验证,但它确实在编译时提供检查。你可以查看here。可以找到同一作者关于PostSharp的其他说明here。
答案 3 :(得分:0)
您可以通过继承System.Attribute来创建自定义属性。在自定义构造函数中,您应该能够检查参数。