获取#define变量列表

即使由于#define是预处理器指令而应该是不可能的,我想问:

是否有可能在实际程序中获得# #define变量的列表? 分别是项目属性中定义的条件编译符号列表。

我为什么需要那个? 我正在使用符号来管理扩展。 我正在尝试获取它们的列表,将它们添加到我的窗口中

 Enabled Extensions: CUSTOMER1_ABC_EXTENSION CUSTOMER2_XYZ_EXTENSION 

无需为每个扩展编写特定代码。

看起来,通常的答案是你不能这样做。 #define的MSDN文档说:

使用#define创建的符号范围是定义符号的文件。

这表明你可能最好使用reflection。 也许您可以使用Attribute类来装饰扩展并提供可以测试的运行时信息。

用它来解决它

 public static class BuildVariables { public static List DefinedVariables = new List() { #if CUSTOMER1_ABC_EXTENSION "CUSTOMER1_ABC_EXTENSION", #endif #if CUSTOMER2_XYZ_EXTENSION "CUSTOMER2_XYZ_EXTENSION", #endif }; } 

这很脏,每次引入新符号时都需要更改。 我不喜欢它。