我想知道是否可以验证(自定义).net 属性的参数。例如:如果我有一个采用正整数的属性,我可以在提供负值时强制编译时错误吗?
[DonkeyAttribute(1)] //确定
[DonkeyAttribute(-828)] //错误
在这个例子中,我可以使用一个无符号整数(但我相信这是不符合 cls 的?)推荐?
我想知道是否可以验证(自定义).net 属性的参数。例如:如果我有一个采用正整数的属性,我可以在提供负值时强制编译时错误吗?
[DonkeyAttribute(1)] //确定
[DonkeyAttribute(-828)] //错误
在这个例子中,我可以使用一个无符号整数(但我相信这是不符合 cls 的?)推荐?
您可以通过单元测试来强制执行此操作;可能与我为这个问题提出的解决方案类似。
直接地?不,不重写 csc 或 vbc。大多数人会在运行时执行上述验证。
然而,在 PostSharp Aspects 上,通过谷歌搜索找到了这篇博文。从技术上讲,它并没有从编译器进行验证,但它确实提供了编译时的检查。你可以在这里查看。可以在此处找到来自同一作者的有关 PostSharp 的其他注释。
您可以通过从 System.Attribute 继承来创建自定义属性。在自定义构造函数中,您应该能够检查参数。