0

我正在调用已作为 Web 参考添加到项目中的 .asmx Web 服务。

从 web 服务返回的任何对象都在 web 服务的命名空间中。我想使用 AutoMapper 将这些对象映射到我的域对象。

例如:

namespace My.Domain
{
    public class Person
    {
        public string Name { get; set; }
        public Pet Pet { get; set; }
    }

    public class Pet
    {
        public string Name { get; set; }
    }
}

这有效...

My.WebService ws = new My.WebService();
My.WebService.Person person = ws.GetPersonById(1);
My.WebService.Pet pet = person.Pet;

但我想这样做...

using My.Domain;

My.WebService ws = new My.WebService();
Person person = ws.GetPersonById(1);  
Pet pet = person.Pet;

有没有什么地方可以让 AutoMapper 插入 web 服务,这样我就可以做到这一点?我可以在哪里设置?或者还有其他方法我需要这样做吗?

4

1 回答 1

1

在 AutoMapper 中执行此操作的最简单方法是......

var request = Mapper.Map<DomainObject, ServiceReferenceObject>(requestDomainObject);
var result = ws.DoSomething(request);
var resultDomainObject = Mapper.Map<ServiceReferenceObject, DomainObject>(result);

是的,每次您需要将某些内容转换为服务引用或从服务引用转换时,您都有额外的一行,但使用 AutoMapper 至少它只是一行,所有的混乱都隐藏在映射器中,因此您不必编写和维护它。

于 2011-03-11T17:52:41.210 回答