Asp.net mvc 4 如何使用automapper在类中映射包含列表的类
我有两个类,一个是源类,另一个是目标类,每个类都包含列表 源类:CompanyResponseAsp.net mvc 4 如何使用automapper在类中映射包含列表的类,asp.net-mvc-4,automapper,Asp.net Mvc 4,Automapper,我有两个类,一个是源类,另一个是目标类,每个类都包含列表 源类:CompanyResponse [DataContract] public class CompanyResponse { [DataMember] public string CompanyId { get; set; } [DataMember] public string CompanyName { get;
[DataContract]
public class CompanyResponse
{
[DataMember]
public string CompanyId { get; set; }
[DataMember]
public string CompanyName { get; set; }
[DataMember]
public string CompanyDomain { get; set; }
[DataMember]
public int Subscription { get; set; }
[DataMember]
public DateTime? ActiveTill { get; set; }
[DataMember]
public List<Subscription> SubscriptionList { get; set; }
}
[DataContract]
public class Subscription
{
[DataMember]
public int SubscriptionId { get; set; }
[DataMember]
public SubscriptionType SubscriptionType { get; set; }
[DataMember]
public string SubscriptionName { get; set; }
[DataMember]
public string SubscriptionCode { get; set; }
[DataMember]
public Nullable<decimal> SubscriptionPriceYearly { get; set; }
}
public enum SubscriptionType : int
{
AvailableOnline = 1,
Custom = 2
}
我想使用automapper映射这两个类
Mapper.CreateMap<CompanyResponse, CreateCompanyViewModel>();
CompanyResponse objCompanyResponse = _objCompanyproxy.GetCompanyInformation();
CreateCompanyViewModel objCreateCompanyViewModel = new CreateCompanyViewModel();
objCreateCompanyViewModel = Mapper.Map<CompanyResponse, CreateCompanyViewModel>(objCompanyResponse);
Mapper.CreateMap();
CompanyResponse objCompanyResponse=\u objCompanyproxy.GetCompanyInformation();
CreateCompanyViewModel对象JCreateCompanyyViewModel=新建CreateCompanyViewModel();
objCreateCompanyViewModel=Mapper.Map(objCompanyResponse);
但映射不正确。请帮助我如何映射两个类。您可以使用此通用方法映射列表并将其分配给主对象
public static List<Toutput> MapObjectsList<TInput, Toutput>(List<TInput> inputObj)
{
var data = new List<Toutput>();
foreach (var row in inputObj)
{
data.Add(Mapper.Map<Toutput>(row));
}
return data;
}
publicstaticlist映射对象列表(List inputObj)
{
var data=新列表();
foreach(inputObj中的var行)
{
data.Add(Mapper.Map(行));
}
返回数据;
}
您可以这样使用它:
Mapper.CreateMap<CompanyResponse, CreateCompanyViewModel>();
Mapper.CreateMap<Subscription, SubscriptionViewModel>();
CompanyResponse objCompanyResponse = _objCompanyproxy.GetCompanyInformation();
CreateCompanyViewModel objCreateCompanyViewModel = new CreateCompanyViewModel();
objCreateCompanyViewModel = Mapper.Map<CompanyResponse, CreateCompanyViewModel>(objCompanyResponse);
objCreateCompanyViewModel.lstSubscription = MapObjectsList<Subscription,SubscriptionViewModel>(objCompanyResponse.SubscriptionList.toList());
Mapper.CreateMap();
CreateMap();
CompanyResponse objCompanyResponse=\u objCompanyproxy.GetCompanyInformation();
CreateCompanyViewModel对象JCreateCompanyyViewModel=新建CreateCompanyViewModel();
objCreateCompanyViewModel=Mapper.Map(objCompanyResponse);
objCreateCompanyViewModel.lstSubscription=MapObjectsList(objCompanyResponse.SubscriptionList.toList());
您是否也为子描述创建了与其等效viewmodel的映射?Automapper将很乐意映射集合-如果它知道如何映射(使用适当的映射)。您还可以显式映射某些成员,因为某些属性具有不同的名称。请给出解决方案。
public static List<Toutput> MapObjectsList<TInput, Toutput>(List<TInput> inputObj)
{
var data = new List<Toutput>();
foreach (var row in inputObj)
{
data.Add(Mapper.Map<Toutput>(row));
}
return data;
}
Mapper.CreateMap<CompanyResponse, CreateCompanyViewModel>();
Mapper.CreateMap<Subscription, SubscriptionViewModel>();
CompanyResponse objCompanyResponse = _objCompanyproxy.GetCompanyInformation();
CreateCompanyViewModel objCreateCompanyViewModel = new CreateCompanyViewModel();
objCreateCompanyViewModel = Mapper.Map<CompanyResponse, CreateCompanyViewModel>(objCompanyResponse);
objCreateCompanyViewModel.lstSubscription = MapObjectsList<Subscription,SubscriptionViewModel>(objCompanyResponse.SubscriptionList.toList());