代码之家  ›  专栏  ›  技术社区  ›  Brent

配置强化类型以扩展与服务器继承模式无关的类

  •  0
  • Brent  · 技术社区  · 6 年前

    我有一个简单的

    public class MyDTO {
       public string Name {get; set;}
    }
    

    我希望客户端使用的所有typescript接口在服务器上都具有MyDTO的属性,并扩展 BreezeJS entity type . 也就是说,typescript文件的输出应该变成

    export interface IMyDTO extends breeze.Entity {
        name: string
    }
    

    但是server/.NET类型是一个简单的POCO(即不从任何类派生),因为BreezeJS.Entity类型的成员纯粹与在ECMAScript环境中管理客户机/上的实体相关。

    如何通过增强的.输入流畅的API来实现这一点?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Pavel B. Novikov    6 年前

    考虑使用以下代码生成器:

    public class BreezeCodeGenerator : InterfaceCodeGenerator
    {
    
        private static readonly RtSimpleTypeName BreezeBase = new RtSimpleTypeName("breeze.Entity");
    
        public override RtInterface GenerateNode(Type element, RtInterface result, TypeResolver resolver)
        {
            var b = base.GenerateNode(element, result, resolver);
            if (b == null) return null;
            b.Implementees.Add(BreezeBase);
            return b;
        }
    }
    

    并将其应用于您的POCO,如下所示:

    public static void Configure(ConfigurationBuilder builder)
    {
        builder.ExportAsInterfaces(
            //or generate IEnumerable of desired POCO types somehow else
            new[] { typeof(BreezeEntity1), typeof(BreezeEntity2) }
            ,
            d => d.WithPublicProperties().WithCodeGenerator<BreezeCodeGenerator>());
    
    }
    
    推荐文章