Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以创建一个将从发布代码中剥离的属性吗?_C#_Debugging_Attributes_Debug Symbols - Fatal编程技术网

C# 我可以创建一个将从发布代码中剥离的属性吗?

C# 我可以创建一个将从发布代码中剥离的属性吗?,c#,debugging,attributes,debug-symbols,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进行子类化 可以这样做吗?您可以从这里获得ConditionalAttri

我想这样做:

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

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

  // etc.

}
我知道
ConditionalAttribute
,但它是密封的,因此我无法从中对我的
NotesAttribute
进行子类化


可以这样做吗?

您可以从这里获得
ConditionalAttribute
的源代码:


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

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

是的,这是可以做到的

看我的

您需要这样做:

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

难道你不能简单地写一个什么都不做的属性吗?很明显,这只是为了你自己的文档,我会写//TODO:但是如果你想让它带有属性,好的。现在,属性应该做什么?没有什么然后你有:)通常我会使用像TFS这样的系统来跟踪要做的工作。。。这似乎是个坏主意。@PeterBons我们不使用TFS。这对我们来说似乎是个好主意。@FlorianBurel“是”和“否”属性是一个有效选项。但我想知道是否能以某种方式实现上述目标。顺便说一句,在我们的例子中,这比注释要好,因为我们可以在代码库上进行反思并运行报告。我们已经使用了无操作属性,但我想尝试将其从发布版本中删除。原因不明的否决票,很好。我觉得没那么容易。编译器知道以特殊的方式专门处理
ConditionalAttribute
。该属性的源代码没有任何特殊功能,因此它必须是一个编译器。@hbob确实是:-),但要从发布代码中完全删除它,没有那么多选项。至少我不知道:-我找到了一个很好的方法来做这件事!!看看我的答案。谢谢你的帮助。
[Conditional("DEBUG")]
public class NotesAttribute : Attribute { }