Условная компиляция для свойств класса на основе потребляющего проекта
Можно ли использовать директивы компилятора #if, чтобы опустить свойства класса?
У меня есть два проекта, использующих общий проект, и я хочу добавить некоторые свойства в общий класс, которые я не хочу видеть другим.
Я попытался добавить условный символ компиляции в одном из проектов, например, MYSYMBOL
а потом делаю это в моем классе:
#if MYSYMBOL
public string MySpecialProperty { get; set; }
#endif
Он компилируется, но ни один проект не может видеть MySpecialProperty, тогда как, очевидно, я бы надеялся, что проект с MYSYMBOL определит возможность доступа к этому свойству...
1 ответ
MYSYMBOL
должен быть определен в проекте компиляции, чтобы сделать свойство видимым. Таким образом, если у вас есть общий библиотечный проект, вы можете определить его там или нет. Следовательно, скомпилированная библиотека всегда будет содержать свойство или нет, независимо от того, в каком потребляющем проекте вы используете библиотеку.
Если вам нужно другое поведение, вы должны скомпилировать класс в обоих проектах-потребителях. Вы можете добавить один и тот же исходный файл в оба проекта и скомпилировать его с разными определениями.