我有一些这样的逻辑:
#define MYVAR
...
#if MYVAR
[Attribute1]
#else
[Attribute2]
#endif
Run Code Online (Sandbox Code Playgroud)
我希望能够根据环境变量切换应用于方法的属性,就像MYVAR设置环境变量一样,然后实际定义符号“MYVAR”,反之亦然。
老实说,我不知道这是否可能。如果没有任何想法如何克服这个问题?我当然可以将其添加到方法本身中 - env. 变量检查,但由于正在执行反射,我需要属性。我可以创建自定义MyAttrbute(int mode),但无法在其构造函数中添加逻辑来提取环境。变量,因为它必须是常量表达式。
可能的解决方案:
就像第一条评论所暗示的那样,我可以阅读环境。自定义属性中的变量。仍然会有一些令人讨厌的反思要做。
因为我使用 dotnet 命令在 Linux 上工作,所以我实际上可以将构建命令与 pre-step 命令捆绑在一起,并在文件顶部sed添加一个虚拟占位符,并将其替换为空字符串或基于 env 的完整字符串。变量。这里没有反射,但不是很优雅。{{define_myvar}}.cs