AutoMapper - 使用很长的属性名称展平类型

时间:2015-06-11 14:31:32

标签: c# automapper

我正在开发一个需要使用ebay网络服务的项目,并且我正在使用他们的ebay .NET SDK。而且因为他们的模型和我的模型之间有很多映射,我想我最终会尝试使用AutoMapper。

所以这是ebay API我正在使用(小部分):

public class SellingManagerProductType {

    SellingManagerProductDetailsType SellingManagerProductDetails { get; set; }

    SellingManagerProductInventoryStatusType SellingManagerProductInventoryStatus { get; set; }

   // other properties 
}

public class SellingManagerProductDetailsType {
    long ProductID { get; set; }
    string ProductName { get; set; }
    string CustomLabel { get; set; }
    // other properties... 
}

public class SellingManagerProductInventoryStatusType {
    int QuantityActive { get; set; }
    int QuantityScheduled { get; set; }
    int QuantitySold { get; set; }
    int QuantityUnsold { get; set; }
    // other properties.. 
} 

对于这种情况,我的模型是非常简单的POCO,它只是扁平化我在CRUD操作中使用的SellingManagerProductType。

public class EbaySellingManagerProduct  {
    long ProductID { get; set; }
    string ProductName { get; set; }
    string CustomLabel { get; set; }
    int QuantityActive { get; set; }
    int QuantityScheduled { get; set; }
    int QuantitySold { get; set; }
    int QuantityUnsold { get; set; }
}

现在,我想使用AutoMapper将SellingManagerProductType压平到我的EbaySellingManagerProduct,但是如果我正确理解AutoMapper的默认约定,我必须像这样命名我的属性:

long SellingManagerProductDetailsTypeProductID { get; set; }
string SellingManagerProductDetailsTypeProductName { get; set; }
string SellingManagerProductDetailsTypeCustomLabel { get; set; }
int SellingManagerProductInventoryStatusTypeQuantityActive { get;set;}
etc...

观看和使用非常痛苦......而且这些类型的映射还有很多。

我的第一个想法是我可以将.ForMember用于这些属性,但我最终会映射很多很多,并且使用此工具几乎没有任何收益。我还有其他选择来避免这个长期的房产名称吗?

我对AutoMapper非常陌生,我们将非常感谢任何指导。感谢。

1 个答案:

答案 0 :(得分:0)

看起来类名的长度很长,不一定是属性。

在这种情况下,您可以使用using语句为类名设置别名。

示例:

using Details = My.Namespace.SellingManagerProductDetailsType;

在此之后,您可以SellingManagerProductDetailsType引用课程Details

这可能会让事情缩短,但需要在每个代码文件的顶部添加using个cookie切割器组。