Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 如何使用automapper在类中映射包含列表的类_Asp.net Mvc 4_Automapper - Fatal编程技术网

Asp.net mvc 4 如何使用automapper在类中映射包含列表的类

Asp.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;

我有两个类,一个是源类,另一个是目标类,每个类都包含列表

源类:CompanyResponse

[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());