即使由于#define
是预处理器指令而应该是不可能的,我也想问:
是否可以在实际程序中获取#define
'd变量的列表?分别是项目属性中定义的条件编译符号列表。
为什么我需要它? 我正在使用符号来管理扩展。我正在尝试获取它们的列表,将它们添加到我的约会窗口中,如
Enabled Extensions:
CUSTOMER1_ABC_EXTENSION
CUSTOMER2_XYZ_EXTENSION
无需为每个扩展程序编写特定代码。
答案 0 :(得分:1)
似乎有些经典的答案是你不能这样做。 #define的MSDN文档说:
使用#define创建的符号范围是定义符号的文件。
这表明您最好使用反射。也许您可以使用Attribute类来装饰扩展并提供可以测试的运行时信息。
答案 1 :(得分:0)
使用
解决它public static class BuildVariables
{
public static List<string> DefinedVariables = new List<string>()
{
#if CUSTOMER1_ABC_EXTENSION
"CUSTOMER1_ABC_EXTENSION",
#endif
#if CUSTOMER2_XYZ_EXTENSION
"CUSTOMER2_XYZ_EXTENSION",
#endif
};
}
这很脏,每次引入新符号时都需要更改。我不喜欢它。