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