Я использую генератор Poco с EF4, и мне интересно, можно ли отредактировать шаблон T4, чтобы заставить все мои классы сущностей реализовать собственный интерфейс. Поскольку pocos сдувается и воссоздается каждый раз, когда запускается пользовательский инструмент, мне придется добавлять это при каждом обновлении - я бы очень хотел этого избежать.
Я понимаю, что мог бы создать частичные классы для каждого poco и реализовать там интерфейс, но я надеялся избежать всего этого стандартного кода.
Любые предложения приветствуются.
Я думаю, что все ближе к решению. Я редактирую шаблон tt, добавляя реализацию к сгенерированной подписи.
<# = Accessibility.ForType (entity) #> <# = code.SpaceAfter (code.AbstractOption (entity)) #> частичный класс <# = code.Escape (entity) #>: IEntity <# = code. StringBefore (",", code.Escape (entity.BaseType)) #>
Но я наткнулся на небольшую загадку. Некоторые из моих сущностей имеют базовые классы (наследование таблиц), которые я обозначил в проекте edmx. Мне нужно заставить все сущности реализовать интерфейс под названием IEntity. Контракт IEntity не имеет методов, поэтому на самом деле ничего не нужно реализовывать. Мне нужно будет полагаться на все сущности, имеющие общую базу. Это связано с совершенно отдельной реализацией пользовательской среды валидации. Я получаю надлежащие подписи для большинства сущностей, однако сущности, у которых уже есть базовый класс, вызывают колебания, потому что вы не можете реализовать интерфейс до того, как унаследуете базовый класс. : IEntity, BaseClass не допускается. Мне нужно поменять их местами, но я не уверен, как мне это сделать в шаблоне.