类级别是否有Conditional属性?

时间:2009-09-11 19:22:03

标签: c# .net debugging

我想在类上使用条件属性,或者更重要的是,有什么能够产生这种效果吗?基本上我不希望类在调试模式下存在。我也不想在#if DEBUG指令中包装每个调用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace NameSpace
{
    [Conditional("Debug")]
    public class ClassName
    {

        public ClassName()
        {
        }
    }
}

2 个答案:

答案 0 :(得分:11)

不,没有。条件属性不会使它们的目标自行消失 - 它们只会使编译器省略目标的用户

Eric Lippert今天有一个post on just this sort of thing。阅读它,看看它对你来说是否更有意义。

如果确实需要在发布模式下省略类本身,那么使用预处理器指令 - 但是你也必须对所有调用者也这样做。无论如何,它有什么危害让课程处于发布模式?

这实际上可能是不同项目中的一个类吗?如果是这样,然后你可以将条件属性应用于所有方法,那么在发布模式下就不需要这种类型,所以你可以避免运送程序集。

答案 1 :(得分:0)

不确定,如果我对此有正确的理解。

但是,如果使用ConditionalAttribute修饰所有方法 - 当符号不存在时,将删除所有方法。因此,虽然该类可供使用,但在运行时不会有任何方法将其用于。

我不确定,为什么你想根据符号排除一个类? 你能解释一下情景吗?