C# другой код метода по символу

Я нахожусь в ситуации, когда реализация кода метода зависит от выбранной конфигурации решения Visual Studio.

Каждая конфигурация нацелена на отдельную внешнюю DLL, которая предоставляет свою версию API, что позволяет мне их дифференцировать. Эти библиотеки DLL предназначены для Autodesk Revit API, если эта информация может помочь.

Как вы можете подумать, каждая версия API, хотя и очень похожая, может иметь тонкие различия между ними, что вынуждает меня иметь другой код в зависимости от того, на какую версию я нацеливаюсь.

Я определил разные символы (REVIT_2014, REVIT_2015и т. д.) для каждой конфигурации, зная, что я могу положиться на старый добрый #ifdef директивы, но сначала я хотел выяснить, есть ли более элегантное решение.

Я читал о ConditionalAttribute но я не могу использовать его так, как я хотел, то есть:

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

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

Как ConditionalAttribute не позволяет переопределять методы, а также не позволяет методам возвращать значения.

Прежде чем я начну мучить мой код с уродливым #ifdef директивы, есть ли другое решение, которое я могу посмотреть?

Заранее спасибо.

0 ответов

Другие вопросы по тегам