我的项目中引用了两个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
对象都是相同的。那么也许有一种简单的方法可以做到这一点?
无论如何,我该如何解决这个问题?
答案 0 :(得分:0)
看,如果你想把东西卖给其他东西,或者到处乱扔东西,那么你使用了错误的语言。 C#是一种静态类型语言(现在有一点动态混合),它不允许你将任何旧类型转换为任何其他类型。
Automapper是一个解决方案,但有点矫枉过正,是的。但是,您可以执行相同的操作 - 创建一个将一个实例转换为另一个实例的方法。它会比你写这个问题花费更少的时间。
或者,如果可以,重构代码以使用相同的Email对象实例。但无论哪种方式,严肃地说,只是dooo eeet。