在哪里设置 AutoMapper 将 asmx 代理对象转换为域对象?

发布于 2024-10-21 05:51:53 字数 774 浏览 2 评论 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 服务中,以便我可以做到这一点?我可以在哪里设置?或者我需要其他方法来做到这一点吗?

I am calling a .asmx web service that I have added to a project as a Web Reference.

Any objects that come back from the webservice are in the namespace of the webservice. I would like to use AutoMapper to map these objects to my domain objects.

e.g.:

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

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

This works...

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

But I would like to do this...

using My.Domain;

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

Is there somewhere I can put AutoMapper to interject in the webservice so I can do that? Where can I set it up? Or is there some other way I need to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风流物 2024-10-28 05:51:53

在 AutoMapper 中执行此操作的最简单方法类似于...

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

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

the easiest way to do this in AutoMapper is something like...

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

Yes, you have an extra line each time you need to convert something to or from the service reference, but with AutoMapper at least it's just one line and all the messiness is hidden away inside the mapper so you don't have to write and maintain it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文