2015-06-19 3 views
0

В проекте C# мне нужно добавить много классов, каждый из которых имеет 10 общих свойств, каждый из которых добавляет несколько конкретных свойств. Ожидается, что число общих свойств будет расти до 20.Visual Studio/C#: включить/объединить файлы

Я хотел бы:

  1. Есть базовый класс/файл, который будет содержать все общие свойства
  2. Создать те многие классы без наследования базового класса, а новые классы имеют общие свойства из базового класса/файла.
  3. В «производных» классах я могу добавить новые свойства.
  4. В будущем, когда список общих свойств будет расти, я бы просто отредактировал базовый класс/файл и автоматически вставил их во всех классах «потомок».

В принципе, мне нужно вставить заполнитель somewhow в моих файлах, ссылки на внешний файл и добавить содержимое в классы во время компиляции, так же, как #include директива работает в C++.

Так что мне нужно наследование без образования классов, это имеет смысл.

+1

«Так что мне нужно наследование без образования классов, это имеет смысл». Не без объяснения причин. – Ralf

+0

Без использования T4 шаблонов нет способа. C# не имеет эквивалентного кода. Хотя с помощью компилятора Rosalyn вы можете написать плагин-компилятор, который будет искать эту директиву и подставить содержимое этого файла, где вы хотите – thorkia

+1

Вы можете использовать командную строку для предварительной сборки и пост-сборки для запуска вашей программы (которая будет действовать как препроцессор), который добавляет свойства в файлы перед сборкой и удаляет после сборки. – cubrr

ответ

0

Возможно, что шкаф можно приобрести: interface properties. Вам все равно нужно реализовать свойства в классах «потомки». Было бы довольно легко написать сценарий самостоятельно, который будет реализовывать их как автоматические свойства, когда основной файл изменится.

+0

Yup, вы можете попробовать комбинировать этот подход с шаблонами кода бритвы/t4 для генерации необходимых классов. –

+0

@JonBarker Если он использует .NET 4.6 и компилятор Rosalyn, он может написать плагин компилятора, который бы дублировал эту функциональность – thorkia

0

Вы можете легко сгенерировать свои классы с помощью CodeDOM. См. Пример that.

0

Вы можете использовать текстовый шаблон T4 для компиляции. Там вы можете добавить все свои свойства, и оттуда код умножается, и вы даже можете изменить его по своему усмотрению. Если вам нужен индивидуальный код для этих классов, вы можете просто сделать классы частичными и добавить отдельный код в файлы вручную.

НО: Вы вряд ли получите какие-либо функции IDE для T4. Есть несколько расширений, которые при kleast дают вам подсветку синтаксиса, но в основном это.

Смежные вопросы