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 を使用すると、少なくとも 1 行で済み、混乱はすべてマッパー内に隠されているため、記述して維持する必要はありません。それ。

于 2011-03-11T17:52:41.210 に答える