1

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

[DonkeyAttribute(1)] //确定

[DonkeyAttribute(-828)] //错误

在这个例子中,我可以使用一个无符号整数(但我相信这是不符合 cls 的?)推荐?

4

4 回答 4

1

您可以通过单元测试来强制执行此操作;可能与我为这个问题提出的解决方案类似。

于 2008-12-16T13:05:01.023 回答
0

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

于 2008-12-16T13:02:49.123 回答
0

直接地?不,不重写 csc 或 vbc。大多数人会在运行时执行上述验证。

然而,在 PostSharp Aspects 上,通过谷歌搜索找到了这篇博文。从技术上讲,它并没有从编译器进行验证,但它确实提供了编译时的检查。你可以在这里查看。可以在此处找到来自同一作者的有关 PostSharp 的其他注释。

于 2008-12-16T13:06:03.690 回答
0

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

于 2008-12-16T13:20:03.847 回答