0

我的项目中引用了两个 Web 服务。一个被称为EmailService另一个TicketService

两者都有一个名为Email. 我现在必须在我的代码中执行以下操作:

var mail = new EmailService.Email();
mail.from = "something";
mail.to = "someone";
mail.subject = "subject";
mailService.Save(mail);

ticketService.Send(mail);

问题是TicketService.Send()期望Email来自TicketService命名空间的对象。所以它在那一点上失败了。

在这种情况下,铸造也不起作用:

ticketService.Send( (TicketService.Email)mail );

这给了我一个错误,即它无法将表达式从EmailService.Emailto 转换为TicketService.Email

我知道我可以使用 AutoMapper 之类的东西,只需将它从一个对象映射到另一个对象。但我宁愿不向解决方案添加另一个依赖项。

也许甚至不需要添加 AutoMapper 之类的东西,因为这两个Email对象是相同的。那么也许有一种简单的方法可以做到这一点?

无论如何,我该如何解决这个问题?

4

1 回答 1

0

看,如果你想随意地将东西转换成其他东西,或者到处乱打字,那么你就使用了错误的语言。C# 是一种静态类型语言(现在混合了一点动态),它不会让您将任何旧类型转换为任何其他类型。

Automapper 是一个解决方案,但有点矫枉过正,是的。但是,您可以做同样的事情——创建一个将一个实例转换为另一个实例的方法。与你写这个问题相比,这将花费你更少的时间。

或者,如果可以,重构代码以使用相同的电子邮件对象实例。但无论哪种方式,说真的,只是dooo eeet。

于 2014-02-18T14:07:56.533 回答