C# Automapper以及泛型和映射缺少的属性
我正在尝试使用通用映射器映射两个对象。因此,我以这种方式设置Automapper,它来自文档:C# Automapper以及泛型和映射缺少的属性,c#,automapper,C#,Automapper,我正在尝试使用通用映射器映射两个对象。因此,我以这种方式设置Automapper,它来自文档: var config = new MapperConfiguration(cfg => { cfg.CreateMap(typeof(Source<>), typeof(Destination<>)); }); mapper = config.CreateMapper(); var
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap(typeof(Source<>), typeof(Destination<>));
});
mapper = config.CreateMapper();
var config=new-MapperConfiguration(cfg=>
{
CreateMap(typeof(源),typeof(目的));
});
mapper=config.CreateMapper();
现在,如果源和目标具有相同的属性,并且从源端的更多属性到目标端的更少属性,那么一切都可以正常工作。但是,如果源的属性少于目标,则会出现错误:
值-->AutoMapper.AutoMapperConfigurationException:
找到了未映射的成员。查看下面的类型和成员
我的问题是,有没有一种方法可以忽略这些属性,即使我在编译时不知道它们是什么
资料来源:
public class Source<T>
{
public T Value { get; set; }
}
public class Destination<T>
{
public T Value { get; set; }
}
public class DataObject1
{
public int Id { get; set; }
public string Code { get; set; }
}
public class DataObject2
{
public int Id { get; set; }
public string Code { get; set; }
public string ActiveFlag { get; set; }
}
公共类源代码
{
公共T值{get;set;}
}
公务舱目的地
{
公共T值{get;set;}
}
公共类DataObject1
{
公共int Id{get;set;}
公共字符串代码{get;set;}
}
公共类DataObject2
{
公共int Id{get;set;}
公共字符串代码{get;set;}
公共字符串ActiveFlag{get;set;}
}
以下是我的测试代码:
var data = new DataObject1() { Id = 10, Code = "Test" };
var source = new Source<DataObject1> { Value = data };
var dest = mapper.Map<Source<DataObject1>, Destination<DataObject2>>(source);
Assert.AreEqual(dest.Value.Id, 10);
var data=newdataobject1(){Id=10,code=“Test”};
变量源=新源{Value=data};
var dest=mapper.Map(源);
Assert.AreEqual(dest.Value.Id,10);
如果将DataObject1
映射到DataObject2
,则映射将成功,如下所示:
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap(typeof(Source<>), typeof(Destination<>));
cfg.CreateMap<DataObject1, DataObject2>();
});
var config=new-MapperConfiguration(cfg=>
{
CreateMap(typeof(源),typeof(目的));
CreateMap();
});
。。。或者您是在试图避免在编译时知道可能需要将
DataObject1
映射到DataObject2
吗?正如AssertConfigurationsValid告诉您的那样,该属性仍然未映射。