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
директивы, есть ли другое решение, которое я могу посмотреть?
Заранее спасибо.