我可以创建一个将从发布代码中删除的属性吗?

时间:2016-08-14 12:27:46

标签: c# debugging attributes debug-symbols

我想做这样的事情:

[Notes("Remember to blah blah blah")]
public class Foo {

  [Notes("Redo this to include blah blah")]
  public string Bar { get; set; }

  // etc.

}

我知道ConditionalAttribute,但它是密封的,因此我无法将NotesAttribute从其中继承。

可以这样做吗?

3 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用预处理器:

https://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

#if DEBUG
[Notes("Remember to blah blah blah")]
#endif
public class Foo {

    [Notes("Redo this to include blah blah")]
    public string Bar { get; set; }

    // etc.

}

答案 1 :(得分:1)

是的,这可以做到!

查看我的related question and answer here

你需要这样做:

[Conditional("DEBUG")]
public class NotesAttribute : Attribute { }

答案 2 :(得分:0)

您可以从此处获取ConditionalAttribute的源代码:

http://referencesource.microsoft.com/#mscorlib/system/diagnostics/conditionalattribute.cs

然后,您只需复制代码并重命名该类,即可获得您的属性。