下面是映射代碼:問題與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