下面是映射代码:问题与AutoMapper和映射的IEnumerable集合
public IEnumerable<GetQuestionsContract> Map(IEnumerable<XmlNode> nodes, XmlNamespaceManager namespaceManager)
{
Mapper.CreateMap<XmlNode, GetQuestionsContract>()
.ForMember(
dest => dest.Id,
options =>
options.ResolveUsing<XmlNodeResolver<string>>().FromMember(
source => source.SelectSingleNode("//wfauth60xsd:questionID", namespaceManager)))
.ForMember(
dest => dest.Question,
options =>
options.ResolveUsing<XmlNodeResolver<string>>().FromMember(
source => source.SelectSingleNode("//wfauth60xsd:question", namespaceManager)));
return Mapper.Map<IEnumerable<XmlNode>, List<GetQuestionsContract>>(nodes);
}
虽然这个工作,它只会出现在了IEnumerable列表中多次返回的第一个元素(如他们的很多倍XmlNodeList中的项目)。
更新:我简化了代码并更新了标题。如果我映射到一个XmlNode,该方案工作得很好,但Enumeration似乎是一个问题。例如,下面的代码工作得很好:
public SomeIdContract Map(XmlDocument document, XmlNamespaceManager namespaceManager)
{
Mapper.CreateMap<XmlDocument, SomeIdContract>()
.ForMember(
dest => dest.Id,
options =>
options.ResolveUsing<XmlNodeResolver<string>>().FromMember(
source => source.SelectSingleNode("//wfauth60msgs:someID", namespaceManager)));
return Mapper.Map<XmlDocument, SomeIdContract>(document);
}
有什么想法?谢谢!
东西有点相似,并与另一种映射技术,它可以帮助我认为:http://valueinjecter.codeplex.com/Thread/View.aspx?ThreadId=218448 – Omu 2010-09-06 17:56:06
谢谢 - 我试过类似的方法,但一直无法到达任何地方。我会发布一个响应,以显示我已经去... – 2010-09-07 16:40:36