获取#define变量列表

时间:2015-01-28 08:10:50

标签: c# c-preprocessor

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

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

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

Enabled Extensions:
CUSTOMER1_ABC_EXTENSION
CUSTOMER2_XYZ_EXTENSION

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

2 个答案:

答案 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
    };
}

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