Условная компиляция для свойств класса на основе потребляющего проекта

Можно ли использовать директивы компилятора #if, чтобы опустить свойства класса?

У меня есть два проекта, использующих общий проект, и я хочу добавить некоторые свойства в общий класс, которые я не хочу видеть другим.

Я попытался добавить условный символ компиляции в одном из проектов, например, MYSYMBOL

а потом делаю это в моем классе:

#if MYSYMBOL

public string MySpecialProperty { get; set; }

#endif

Он компилируется, но ни один проект не может видеть MySpecialProperty, тогда как, очевидно, я бы надеялся, что проект с MYSYMBOL определит возможность доступа к этому свойству...

1 ответ

MYSYMBOL должен быть определен в проекте компиляции, чтобы сделать свойство видимым. Таким образом, если у вас есть общий библиотечный проект, вы можете определить его там или нет. Следовательно, скомпилированная библиотека всегда будет содержать свойство или нет, независимо от того, в каком потребляющем проекте вы используете библиотеку.

Если вам нужно другое поведение, вы должны скомпилировать класс в обоих проектах-потребителях. Вы можете добавить один и тот же исходный файл в оба проекта и скомпилировать его с разными определениями.

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