使用TypeLite生成具有DataMember名称的C#类

时间:2017-09-26 08:25:51

标签: c# typescript serialization typelite

我目前正在使用TypeLite从一组C#类构建.d.ts接口文件。我遇到了一个问题,其中一些类具有DataMember的属性,其中给定的值与属性名称不同。在这种情况下,我希望TypeLite使用DataMember属性而不是属性名称 - 遗憾的是,我在文档中找不到任何可能的内容。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

code仅检查内置[TsProperty]属性以重命名属性:

var attribute = memberInfo.GetCustomAttribute<TsPropertyAttribute>(false);
if (attribute != null) {
    if (!string.IsNullOrEmpty(attribute.Name)) {
        this.Name = attribute.Name;
    }

    this.IsOptional = attribute.IsOptional;
}

您可以轻松修补此内容以包含[DataMember]属性:

var dataMemberAttribute = memberInfo.GetCustomAttribute<System.Runtime.Serialization.DataMemberAttribute>(false);
if (dataMemberAttribute!= null) {
    if (!string.IsNullOrEmpty(dataMemberAttribute.Name)) {
        this.Name = dataMemberAttribute.Name;
    }

    this.IsOptional = !dataMemberAttribute.IsRequired;
}

也许您可以使用该修复程序提交拉取请求。确保添加测试并考虑两个属性都应用于属性的情况。

为了保持一致性,您还必须修补支持[DataContract]属性才能重命名类。