2011-12-20 106 views
5

我已经为属性创建了一些属性。现在我想限制这些属性具有某种数据类型的属性?这个想法是,一个编译器错误将被抛出,如果它被分配给不同的类型。这可能吗?如果不是,那么我想我将不得不在运行时检查它。C#属性用法:只允许特定数据类型属性的属性

+0

可能重复[http://stackoverflow.com/questions/4959863/how-to-make-net-attribute-only-valid-on-certain-types](http://stackoverflow.com/questions/4959863/how-to-make-net-attribute-only-valid-on-certain-type) – heads5150 2011-12-20 10:56:53

+1

我不认为这是重复的。这是为了将属性应用于类。这是针对特定类型的属性。 – Mel 2011-12-20 11:09:36

+0

但是命运看起来一样:( – Mel 2011-12-20 11:10:46

回答

7

你可以写一个自定义的FxCop/ Code Analysis规则来检查这个。

FxCop集成在VS 2010中,名称为“Code Analyis”,您可以更改项目属性中的规则集。

+0

谢谢,这两个答案都是很好的和可能的解决方案,我可能会去CA,因为这是我们在这里使用的,我知道它可能是个坏东西,但是我们的团队没有使用单元测试! – Mel 2011-12-20 11:12:35

+0

@Mel FxCop/Code Analysis绝对是一个不错的选择。 – 2011-12-20 22:40:38

4

不,这是不可能的。

一个很好的解决方法是建立一个单元测试它将遍历所有类,它们的属性并检查这个额外的适用性标准。编译时错误信息并不是那么舒服,但是可以达到目的。如果您拥有某种构建自动化基础架构,则质量保证级别在实践中将保持不变。