我想知道条件方法是否可以在类属性上具有条件。
例如:
class Class1
{
public bool _doStuff;
[Conditional(_doStuff)]
public static void Stuff() {
// Do the stuff
}
}
与[Conditonal("DEBUG")]
一样。
有人知道吗?
答案 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
}