C# 将web服务器对象强制转换为其他(相同)web服务器对象
我的项目中引用了两个web服务。一个叫做C# 将web服务器对象强制转换为其他(相同)web服务器对象,c#,casting,data-objects,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); 问题在
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
对象都是相同的。那么,也许有一种简单的方法可以做到这一点
无论如何,我怎样才能解决这个问题 听着,如果你想随意把东西换成其他东西,或者到处打字,那你就用错了语言。C#是一种静态类型的语言(现在混合了一些动态),它不允许您将任何旧类型强制转换为任何其他类型 Automapper是一个解决方案,但有点过分,是的。但是,您可以执行与之相同的操作--创建一个方法,将一个实例转换为另一个实例。这比你写这个问题花费的时间要少
或者,如果可以,重构代码以使用电子邮件对象的相同实例。但是,不管怎样,说真的,都是doooeet。你不能,因为你没有在这里应用多模态,你不能一个一个地将一个对象属性映射到另一个对象属性吗?有时在软件开发中,如果需要多次使用“translator”方法来实现这一点是可以的。为什么不在函数中创建
TicketService.Email
而不是EmailService.Email
方法会抱怨它需要一个EmailService.Email
。是的,但问题是,我不知道如何将一个实例转换为另一个实例。我当然可以想出一些方法,比如我可以序列化对象,然后反序列化它,然后在那一刻将它转换为我想要的任何对象。但我只想知道什么是好方法。没必要这么生气重构不是一个选项,因为我只是使用服务。不是我创造的。@Vivendi:thisguiy.PropertyA=thatguiy.PropertyA;thisGuy.PropertyB=converttopropertyBecauseSuckit(thatGuy.SomeOtherProperty)这不是魔法。您可以编写代码将一个转换为另一个。