c# - Servicestack.Text ConvertTo<> tomap 具有不同名称的属性或任何其他解决方案?

标签 c# type-conversion servicestack servicestack-text

考虑到我的 Api 模型中有这些类,因为其他操作可能需要具有不同属性的 customerData 我隐藏了这样的基本属性:

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

    public string PublicKey { get; set; }
}

和这个类:

     public class AddCustomerInput:CustomerData
        {
            [Required]
            public new string Name { get; set; }
            [Required]
            public new string PublicKey { get; set; }
       }

这两个模型是 Api 级别的,我还有另一个域级别的模型:

   public class ExternalCustomerData
        {              
            public new string CustomerName{ get; set; }               
            public new string PublicKey { get; set; }
        }

如您所见,这里的名称是 customerName,这些模型也很大,在 api 和域模型名称中具有不同的名称,但我缩短了模型,

我还有这个转换类型的扩展方法:

    public static ExternalCustomerData ToExternalCustomerData(this CustomerData customerData)
    {
        //All properties with same property names convert correctly
        var externalCustomerData =customerData.ConvertTo<ExternalCustomerData>();
        //but the result of customerData.Name is null
        externalCustomerData .CustomerName= customerData.Name ;
        return externalCustomerData ;
    }

当我将此扩展方法用于 AddCustomerInput 时:

addCustomerInputObject.ToExternalCustomerData();

我看到所有具有相同属性名称的属性都正确转换,但是这一行:

externalCustomerData .CustomerName= customerData.Name

为空。 我想知道 servicestack 将这个父对象正确地转换为子对象的原因是什么,我怎样才能实现名称的更改? 我想知道是否可以通过 servicestack.text convertTo 获得结果?如果没有,有什么好的解决方案吗?

*我知道我可以拥有

 public static ExternalCustomerData ToExternalCustomerData(this AddCustomerInput customerData)
        {
        }

它工作正常,但我有很多 apiInput 模型,它们都继承自 CustomerData,我应该有很多扩展方法。

最佳答案

没有ServiceStack's Auto Mapping不支持不同名称的映射属性,建议到use Extension Methods处理任何额外的定制需要。

关于c# - Servicestack.Text ConvertTo<> tomap 具有不同名称的属性或任何其他解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48094496/

相关文章:

c++ - 如何定义从标准类型到用户定义类型的转换?

java - JNI 中 unsigned char 指针的等价物是什么?

c++ - 什么是无约束转换运算符模板,它有什么用?

servicestack - 我们如何在 ServiceStack 中删除特定用户的 session ?

c# - 为什么 ReSharper 在将属性转换为自动属性时需要扫描所有文件?

c# - 在字符串列表中查找所有整数

c# - 如何显示 Javascript 警报而不是黄页错误

c# - 方法不会正确地将值分配给 selectindex,asp.net radiobuttonlist

c# - ServiceStack AppHost 是单例吗?

c# - 从 WSDL 生成 ServiceStack 服务