可以验证.NET Attribute参数吗?

时间:2008-12-16 12:54:26

标签: c# attributes

我想知道是否可以验证(custom).net属性的参数。例如:如果我的属性采用正整数,那么在提供负值时是否可以强制编译时错误?

[DonkeyAttribute(1)] //确定

[DonkeyAttribute(-828)] //错误

在这个例子中,我可以使用无符号整数(但这是非cls兼容我相信?) 建议?

4 个答案:

答案 0 :(得分:1)

您可以通过单元测试来强制执行此操作;类似于我为this question建议的解决方案,也许。

答案 1 :(得分:0)

我不认为这是正常的,但this文章详细介绍了使用PostSharp的解决方案。不确定它是否适合您的目的,但请放手一搏!

答案 2 :(得分:0)

直接?不。不是没有重写csc或vbc。大多数人会在运行时执行所述验证。

然而,谷歌搜索了一下blog entry on PostSharp Aspects。它在技术上不会从编译器验证,但它确实在编译时提供检查。你可以查看here。可以找到同一作者关于PostSharp的其他说明here

答案 3 :(得分:0)

您可以通过继承System.Attribute来创建自定义属性。在自定义构造函数中,您应该能够检查参数。