有没有办法将属性标记为有条件

Jar*_*son 2 c# attributes conditional-compilation

因此,我使用了一些属性,然后我意识到拥有一个取决于我是否在调试或发行版中使用的属性可能对我有所帮助。

事实证明,我无法通过搜索google或堆栈溢出找到所需的内容。有一个名为[Conditional]的属性,有一个[DebuggerDisplay],但我找不到一个将属性本身设置为条件的属性。

以下链接说明了[Conditional] vs #if Debug #if DEBUG vs. Conditional(“ DEBUG”)

我要寻找的只是更接近于属性形式。

#if DEBUG
    [SomeAttribute(...)]
#endif
Run Code Online (Sandbox Code Playgroud)

我意识到我可以执行#define,然后使用正确的符号,这将使我不必再进行#if调试,但是我觉得应该有一个我不知道的属性标志。

vcs*_*nes 5

这取决于您要实现的目标。

如果您是的作者SomeAttribute,并且希望该属性的所有应用程序都是有条件的,则可以将该Conditional属性应用于类型声明本身:

[Conditional("DEBUG")]
[System.AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)]
public class SomeAttribute : Attribute
{
    ...
Run Code Online (Sandbox Code Playgroud)

如果您没有的来源SomeAttribute,或者您不希望它是全有或全无,那么预处理器语句将只保留内置的内容。