reinforced-typings - 配置增强类型以扩展与服务器继承模式无关的类
问题描述
我有一个像这样的简单 DTO
public class MyDTO {
public string Name {get; set;}
}
我希望客户端使用的所有打字稿接口在服务器上都具有 MyDTO 的属性,并且还扩展了 BreezeJS 实体类型。也就是说,打字稿文件的输出应该变成
export interface IMyDTO extends breeze.Entity {
name: string
}
但是 server/.NET 类型是一个简单的 POCO(即不从任何类派生),因为 BreezeJS.Entity 类型的成员纯粹与管理客户端上的实体/ECMAScript 环境中的实体有关。
如何使用 Reinforced.Typings fluent API 实现这一点?
解决方案
考虑使用以下代码生成器:
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>());
}
推荐阅读
- javascript - 在桌面应用程序上调用 AWS Lambda
- python - 当前频道不提供以下套餐
- r - R:添加另一个字段匹配的数据帧的两个元素
- r - 如何将自定义函数导出到 multidplyr 中的集群?
- c - 使用 libunwind 实现异常
- python-3.x - 在 Python 中,如何在正在运行的子进程中引用从“subprocess.run”传递的参数?
- facebook - 我们如何将聊天机器人与 Facebook Messenger 连接起来?
- angular - 如何在 Bs Datepicker 中获取正确的日期值?
- html - 如何使用适当的样式连接 Django 应用程序和 HTML 模板?
- javascript - Jquery 启用/禁用按钮 textarea 验证