Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как слепить файл-мeнеджер?

21.02.18 18:34
Re: Как слепить файл-мeнеджер?
 
Murr патриот
Murr
в ответ Murr 21.02.18 17:42

Теперь - проблема.


Мне очень не хочется нагружать шаблоны лишней функциональностью.

В частности - функциональностью определения применимости шаблона в конкретном контексте и функциональностью записи/перезаписи файлов.


По применимости есть ограниченное, но - расширяемое, решение при формировании списка шаблонов.

Анализируются атрибуты и имплементация интерфейсов и по результатам принимается решение по включений в список.

Решение не полное - атрибуты не содержат, например, имен файлов - оно и понятно - это часть исходных данных и она будет доступна только после инстанцирования шаблонов.

Так что часть работы по применимости все одно ляжет либо на файловый менеджер, либо на генератор, либо будет вынесена еще куда-то.

Но это - пока не критично.


Критичная часть - функциональность записи.

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

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

Возможно, что он так же должен будет отвечать на вопрос - а надо ли вообще генерировать данным шаблоном при этих исходных данных ?


Пока вроде как все получается сделать:

- шаблоны фильтруются изначально и отбираются те, которые требуют генерировать файл.

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


А дальше начинается непонятное: надо каким-то образом решать проблему назначения файл-менеджера для шаблона.

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

Например так:

C:\_generated\Overwritebale\Solution1\Project1\A.cs

C:\_generated\ManualCode\Solution1\Project1\A.cs

где A.cs - partial class.

Ожидается, что в МануалКоде будет добавлятся ручная часть кодирования.

В примере используются или два шаблона, или один с дополнительным параметром.

При этом часть путей C:\_generated\Overwritebale\ и C:\_generated\ManualCode\ определены в Исходных данных,


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


Как и когда это делать?

или

Куда и какую информацию добавить чтобы это было просто?

 

Перейти на