我需要在 RIA 域服务向导生成的所有实体的 Get 方法中插入一组通用代码。是否可以覆盖域服务向导的代码生成,以便我可以自动插入该代码?
谢谢, 安库尔
我需要在 RIA 域服务向导生成的所有实体的 Get 方法中插入一组通用代码。是否可以覆盖域服务向导的代码生成,以便我可以自动插入该代码?
谢谢, 安库尔
您绝对可以修改和编辑(甚至编写自己的)负责代码生成的 T4 模板.. 类似于这两个链接的内容:
此外,您可以从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 #>;
}
Stefan Cruysberghs还撰写了一篇很棒的博客文章,涵盖了这个主题。
他正在使用RIAServices.T4 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(); }
}
}