将Web服务器对象转换为其他(相同)Web服务器对象

时间:2014-02-18 14:00:25

标签: c# casting data-objects

我的项目中引用了两个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.Email转换为TicketService.Email

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

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

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

1 个答案:

答案 0 :(得分:0)

看,如果你想把东西卖给其他东西,或者到处乱扔东西,那么你使用了错误的语言。 C#是一种静态类型语言(现在有一点动态混合),它不允许你将任何旧类型转换为任何其他类型。

Automapper是一个解决方案,但有点矫枉过正,是的。但是,您可以执行相同的操作 - 创建一个将一个实例转换为另一个实例的方法。它会比你写这个问题花费更少的时间。

或者,如果可以,重构代码以使用相同的Email对象实例。但无论哪种方式,严肃地说,只是dooo eeet。