检查是否已使用具有相同值的Attribut

时间:2016-06-13 11:14:00

标签: c# compiler-errors attributes postsharp

我正在编写一种TLV de- / serialization类。

与protobuf-net一样,我有一份合同归属于类和属性的成员。成员属性具有像protobuf中的标记号。 现在我想检查是否已经使用了Tag号,如果存在某种编译器错误,最好的解决方案就是。如果这有用,我也有postharp。 类结构如下所示:

[TlvContract]
public class Person{
    [TlvMember(1)]
    public String Name{get; set;}
    [TlvMember(2)]
    public Int32 ID{get; set;}
    // This should create a warning or compile error!!!!
    [TlvMember(1)]
    public String Town{get; set;}
}

1 个答案:

答案 0 :(得分:1)

除了Roslyn分析仪之外,PostSharp还是一种可行的方法。

以下是此类检查和错误输出的基本实现:

ITypeLevelAspect

它适用于您定义它的程序集。您只需要确保PostSharp实际运行在您希望检查工作的所有程序集上。

如果您的属性需要不同的基类,您还可以实现ITypeLevelAspectBuildSemantics和{{1}}接口。

相关问题