0

我需要在 RIA 域服务向导生成的所有实体的 Get 方法中插入一组通用代码。是否可以覆盖域服务向导的代码生成,以便我可以自动插入该代码?

谢谢, 安库尔

4

2 回答 2

0

您绝对可以修改和编辑(甚至编写自己的)负责代码生成的 T4 模板.. 类似于这两个链接的内容:

用于 WCF RIA 服务的 T4 代码生成器

使用 T4 改变 RIA 服务的工作方式

此外,您可以从CodePlex 上的 WCF RIA Services Contrib 项目中检查 RIA 服务(服务器端)的 T4 模板,该项目允许您修改 GET 方法,如下所示:

public IQueryable<<#= Entity.Name #>> Get<#= Entity.Name #>()
{
     //Inject Custom code here
     return this.ObjectContext.<#= Entity.Mapping.StoreEntitySet #>;
}
于 2011-10-17T18:00:38.950 回答
0

Stefan Cruysberghs还撰写了一篇很棒的博客文章,涵盖了这个主题。

他正在使用RIAServices.T4 nuget-package来修改在客户端生成的代码。引用的文章对此进行了非常详细的介绍,但实质如下:

  • 将 nuget-package 添加到包含服务的项目中
  • 使用预定义的基类实现您自己的代码生成器

    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(); }
        }
    }
    
于 2013-05-07T10:45:43.233 回答