0

我处于方法代码实现取决于所选 Visual Studio 解决方案配置的情况。

每个配置都针对不同的外部 DLL,该 DLL 提供不同的 API 版本,以便我区分它们。如果该信息有帮助,这些 DLL 将用于 Autodesk Revit API。

正如您可能认为的那样,每个 API 版本虽然非常相似,但它们之间可能存在细微差别,这迫使我根据目标版本使用不同的代码。

我为每个配置定义了不同的符号(REVIT_2014REVIT_2015等),我知道我可以依赖于好的旧#ifdef指令,但首先我想探索是否有更优雅的解决方案。

我已经阅读过ConditionalAttribute但我不能以我想要的方式使用它,即:

class Test
{
    [Conditional("REVIT_2015")]
    bool TestMethod
    {
        //Revit 2015 specific code
    }

    [Conditional("REVIT_2016")]
    bool TestMethod
    {
        //Revit 2016 specific code
    }
}

AsConditionalAttribute不允许覆盖方法,也不允许方法返回值。

在我开始用丑陋的指令困扰我的代码之前,我#ifdef还有其他解决方案吗?

提前致谢。

4

0 回答 0