gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:31:20 26 4
gpt4 key购买 nike

考虑到我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com