条件方法取决于类属性

时间:2015-02-06 16:32:57

标签: c# custom-attributes

我想知道条件方法是否可以在类属性上具有条件。

例如:

class Class1 
{
   public bool _doStuff;

   [Conditional(_doStuff)]
   public static void Stuff() {
      // Do the stuff
   }
}

[Conditonal("DEBUG")]一样。

有人知道吗?

3 个答案:

答案 0 :(得分:10)

这不存在。更重要的是,这是不合逻辑的。

如果不满足条件,标记为Conditional的方法不会参与构建过程。这个决定不能在运行时做出。

省略代码,好像它从未写过,可执行文件(或dll)不包含该方法。

答案 1 :(得分:2)

属性的输入应该是常量。它在构建时用作构造函数的输入。

所以在这种情况下它不起作用。

如果你真的想要有条件的东西,可以通过变量来设置,我建议你自己编写属性类。

答案 2 :(得分:0)

不,没有。

1.)你可以做的是后编译拦截生成的IL并删除任何不需要的生成的IL代码。 看看 - https://msdn.microsoft.com/en-us/library/system.reflection.emit.ilgenerator%28v=vs.110%29.aspx

2.)在课程定义和您使用课程的每个地方使用预处理标签 例如:

#if test
    internal class SomeClass
    {
      public void SomeMethod(){}
    }
#endif

and :
public static void main()
{
#if test
      var someClass= new SomeClass();
      someClass.SomeMethod();
#endif

}