预处理器指令反射注入

Posted

技术标签:

【中文标题】预处理器指令反射注入【英文标题】:Preprocessor Directives Reflection Injection 【发布时间】:2012-08-19 02:39:00 【问题描述】:

如何通过反射将C# Preprocessor Directives注入接口?

示例: 我想将#if SILVERLIGHT 注入任何 WCF 服务合约接口。

【问题讨论】:

预处理器命令在代码生成之前进行评估。它们不存在于要反映的程序集中。 【参考方案1】:

简短的回答:你不能。 稍微长一点的答案:你的问题一开始就没有意义。

预处理器指令在编译前处理。该处理的结果是新的、修改后的源代码。然后编译该源代码。

例如,如果SILVERLIGHT 符号在编译时没有定义,那么#if SiLVERLIGHT#endif 之间的整个代码将被编译器完全忽略,就好像它根本不存在一样。

【讨论】:

【参考方案2】:

这是不可能的。根据名称,预处理器指令仅在编译时间之前存在。无处可去。

【讨论】:

以上是关于预处理器指令反射注入的主要内容,如果未能解决你的问题,请参考以下文章

预处理器指令

笔记2:预处理器-预处理指令

C#预处理器指令

C#预处理器指令 ,你造吗??? (●'?'●)

C ++中的宏指令和预处理器指令有啥区别[重复]

预处理器宏扩展为另一个预处理器指令