考虑我在我的Api模型中有这些类,因为其他操作可能需要具有不同属性的customerData我隐藏了这样的基本属性:
public class AddCustomerInput:CustomerData
{
[Required]
public new string Name { get; set; }
[Required]
public new string PublicKey { get; set; }
}
和这堂课:
public class ExternalCustomerData
{
public new string CustomerName{ get; set; }
public new string PublicKey { get; set; }
}
这两个模型属于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 ;
}
你可以看到这里的名字是customerName,这些模型在api和域模型名称中都有不同的名称,但我缩短了模型,
我也有这种扩展方法来转换类型:
addCustomerInputObject.ToExternalCustomerData();
当我对AddCustomerInput使用此扩展方法时:
externalCustomerData .CustomerName= customerData.Name
我看到具有相同属性名称的所有属性都正确转换,但是这一行:
public static ExternalCustomerData ToExternalCustomerData(this AddCustomerInput customerData)
{
}
为空。 我想知道servicestack将这个父对象强制转换为child的原因是什么,我怎样才能实现名称的更改? 我想知道是否可以使用servicestack.text convertTo获得结果?如果没有这样做有什么好的解决方案吗?
*我知道我可以
Customer.
joins(:orders).
group('customers.id').
where('orders.created_at > DATE_SUB(NOW(), INTERVAL 3 MONTH)')
select('sum(orders.id), customers.*')
它运行正常,但我有很多apiInput模型,它们都是从CustomerData继承的,我应该有很多扩展方法。