【发布时间】:2011-01-11 06:25:29
【问题描述】:
如果满足某个条件,是否可以在 C# 中编写 MSIL 代码,将预处理器指令添加到代码中,例如 #warning?或者也许这可以通过反射来完成,我不知道。
我正在尝试编写一个自定义属性,如果将其错误地应用于类的方法或属性,将生成编译器警告。使用现有的Obsolete 属性将不起作用,因为仅使用我的自定义属性会导致警告,我不希望这样。我希望自定义属性构造函数检查某个条件,如果该条件为真,则引发编译警告。
更新: 回顾我的问题后,我认为我所要求的内容是不可能的,因为我混合了编译时和运行时约束。我想我最终会执行一个构建后任务来检查刚刚构建的 DLL,如果条件为真,让它吐出错误消息。
【问题讨论】:
-
我想我明白你在说什么,你想要一个自定义属性应用到一个方法,如果满足一个条件就发出一个#warning指令。我认为你不能这样做,因为#warning 是一个编译时指令..
-
顺便问下好问题...+1 来自我...
标签: c# reflection c-preprocessor compiler-warnings cil