C# 自动映射-无法解析通用列表 Mapper.CreateMap() .ForMember(x=>x.ExtensionData,y=>y.Ignore()) .ForMember(z=>z.ValidPlaces,a=>a.ResolveUsing(typeof(ValidPlaces))); assertConfigurationsValid(); proxydobject=Mapper.Map(_instanceOfBusinessObject)//引发异常,表示无法解析ValidPlaces 公共类BusinessObject { 公共Enum1 Enum1{get;set;} 公共列表有效位置{get;set;} } 公共类有效位置 { 公共int No{get;set;} 公共字符串名称{get;set;} } 公共类数据对象 { [数据成员] 公共Enum1 Enum1{get;set;} [数据成员] 公共列表有效位置{get;set;} }

C# 自动映射-无法解析通用列表 Mapper.CreateMap() .ForMember(x=>x.ExtensionData,y=>y.Ignore()) .ForMember(z=>z.ValidPlaces,a=>a.ResolveUsing(typeof(ValidPlaces))); assertConfigurationsValid(); proxydobject=Mapper.Map(_instanceOfBusinessObject)//引发异常,表示无法解析ValidPlaces 公共类BusinessObject { 公共Enum1 Enum1{get;set;} 公共列表有效位置{get;set;} } 公共类有效位置 { 公共int No{get;set;} 公共字符串名称{get;set;} } 公共类数据对象 { [数据成员] 公共Enum1 Enum1{get;set;} [数据成员] 公共列表有效位置{get;set;} },c#,automapper,codeplex,C#,Automapper,Codeplex,Mapper.CreateMap在Mapper.assertConfigurationsValid()时工作(此行没有引发异常),但 当我在下一行(此处未显示)实际调用WCF服务时,Automapper抛出异常,表示ValidPlaces无法映射。如果我在ValidPlaces属性上放置Ignore(),则可以正常工作,但理想情况下希望传递该属性 任何汽车制造商专家都请帮忙。您应该能够放弃购买有效位置的线路: Mapper.CreateMap<BusinessObject, Proxy.

Mapper.CreateMap在
Mapper.assertConfigurationsValid()时工作(此行没有引发异常),但
当我在下一行(此处未显示)实际调用WCF服务时,Automapper抛出异常,表示ValidPlaces无法映射。如果我在ValidPlaces属性上放置Ignore(),则可以正常工作,但理想情况下希望传递该属性


任何汽车制造商专家都请帮忙。

您应该能够放弃购买有效位置的线路:

 Mapper.CreateMap<BusinessObject, Proxy.DataContacts.DCObject>()
 .ForMember(x => x.ExtensionData, y => y.Ignore())
 .ForMember(z => z.ValidPlaces, a=> a.ResolveUsing(typeof(ValidPlaces)));
 Mapper.AssertConfigurationIsValid();  

 proxydcObject = Mapper.Map<BusinessObject, Proxy.DataContracts.DCObject>(_instanceOfBusinessObject); //throws an exception saying ValidPlaces could not be resolved

 public class BusinessObject
 {
     public Enum1 Enum1 { get; set; }
     public List<ValidPlaces> ValidPlaces{ get; set; }
 }

 public class ValidPlaces
 {
     public int No { get; set; }
     public string Name { get; set; }
}

public class DCObject
{
    [DataMember]
    public Enum1 Enum1 { get; set; }
    [DataMember]
    public List<ValidPlaces> ValidPlaces{ get; set; }
}
Mapper.CreateMap()
.ForMember(x=>x.ExtensionData,y=>y.Ignore());

值解析程序用于自定义类进行值解析,并且必须为IValueResolver类型。这是我应该设置的一些防御性编码。但对于T的列表->U的列表,只要AutoMapper能够映射T->U,它就会工作。在您的情况下,因为T==U,所以您不需要做任何额外的事情。否则,您必须将T映射到U(但不是T的列表->U的列表)。

我的DCObject有extensiondata,但业务对象没有此属性,因此我将其放置到位,否则会出现错误。在我的例子中,T==U,但我想把List翻译成List,这很好。AutoMapper支持自动列表,无需任何额外配置。我可以这样做:Mapper.Map(new[]{1,2,3});零配置。您只需要注册元素类型,因为元素类型在您的情况下是相同的,所以不需要额外的配置。AutoMapper支持开箱即用的可分配类型。
Mapper.CreateMap<BusinessObject, Proxy.DataContacts.DCObject>()
 .ForMember(x => x.ExtensionData, y => y.Ignore());