获取#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 }; }
这很脏,每次引入新符号时都需要更改。 我不喜欢它。