переопределение генерации кода RIA DomianService - PullRequest
0 голосов
/ 17 октября 2011

Мне нужно вставить общий набор кода в метод Get для всех сущностей, созданных мастером RIA Domain Service. Можно ли переопределить генерацию кода мастера службы домена, чтобы я мог автоматически вставить этот код?

Спасибо, Анкур

Ответы [ 2 ]

0 голосов
/ 07 мая 2013

Существует также отличное сообщение в блоге , написанное Стефаном Крайсбергсом на эту тему.

Он использует RIAServices.T4 nuget-package для изменениякод, который генерируется на стороне клиента.Ссылочная статья описывает это очень подробно, но суть заключается в следующем:

  • Добавьте пакет nuget в проект, связанный со службами
  • Реализация собственного генератора кодаиспользуя предопределенный базовый класс

    public class MyDomainContextGenerator : CSharpDomainContextGenerator
    {
        protected override void GenerateClassDeclaration()
        {
            // Add something before the class generation here...
            base.GenerateClassDeclaration();
        }
    }
    
  • Посоветуйте RIAServices использовать этот генератор с помощью приписанного класса:

    [DomainServiceClientCodeGenerator("MyCodeGenerator", "C#")]
    public class MyCodeGenerator : CSharpClientCodeGenerator
    {
        protected override DomainContextGenerator DomainContextGenerator
        {
            get { return new MyDomainContextGenerator(); }
        }
    }
    
0 голосов
/ 17 октября 2011

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

Генератор кода T4 для служб RIA WCF

Использование T4 для изменения способа работы служб RIA

Кроме того, вы можете проверить шаблон T4 для служб RIA (на стороне сервера) из проекта WCF RIA Services Contrib на CodePlex , который позволяет вам изменять методы GET следующим образом:

public IQueryable<<#= Entity.Name #>> Get<#= Entity.Name #>()
{
     //Inject Custom code here
     return this.ObjectContext.<#= Entity.Mapping.StoreEntitySet #>;
}
...