C# AutoMapper DynamicMap与接口上的DataReader
我对AutoMapper比较陌生,但发现它在将WCF服务中的对象转换为DTO(某种意义上)方面非常强大 今天我遇到了一个我认为应该有效的情况,但失败了。我在大多数地方都是针对接口编程的,我的很多映射(有效)实际上是将EF实体映射到DTO的接口(即Mapper.CreateMap();) 然而,我遇到了一个情况,我有一个数据表,我想使用AutoMapper来转换它。我很快发现了一些看起来很有希望的样本,但它们一直失败,例外情况相对模糊(至少对我来说) 作为测试,我更改了DynamicMap调用以使用DTO的具体实现,它成功地工作了。我最初没有这样做,因为我之前创建的所有接口映射都是由我的IoC容器(Unity 3.x)解析的 有没有办法让这个特定的映射使用接口工作,或者在执行返回集合的动态映射时必须使用具体类 失败:C# AutoMapper DynamicMap与接口上的DataReader,c#,unity-container,automapper,C#,Unity Container,Automapper,我对AutoMapper比较陌生,但发现它在将WCF服务中的对象转换为DTO(某种意义上)方面非常强大 今天我遇到了一个我认为应该有效的情况,但失败了。我在大多数地方都是针对接口编程的,我的很多映射(有效)实际上是将EF实体映射到DTO的接口(即Mapper.CreateMap();) 然而,我遇到了一个情况,我有一个数据表,我想使用AutoMapper来转换它。我很快发现了一些看起来很有希望的样本,但它们一直失败,例外情况相对模糊(至少对我来说) 作为测试,我更改了DynamicMap调用以使
AutoMapper.Mapper.DynamicMap<IDataReader, IEnumerable<IPunctuationMapDto>>(table.CreateDataReader());
IPuncTurationMapdTo:
public interface IPunctuationMapDto
{
int Id { get; set; }
string TaggedValue { get; set; }
int UntaggedValue { get; set; }
}
汽车制造商Jimmy Bogard在另一个论坛上回答说: 数据读取器映射器不支持接口,只支持具体类。这是因为数据读取器映射器是使用reflection.emit实现的,以提高速度
[DataContract]
public class PunctuationMapDto : IPunctuationMapDto
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string TaggedValue { get; set; }
[DataMember]
public int UntaggedValue { get; set; }
}
public interface IPunctuationMapDto
{
int Id { get; set; }
string TaggedValue { get; set; }
int UntaggedValue { get; set; }
}