Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将web服务器对象强制转换为其他(相同)web服务器对象_C#_Casting_Data Objects - Fatal编程技术网

C# 将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); 问题在

我的项目中引用了两个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
对象都是相同的。那么,也许有一种简单的方法可以做到这一点


无论如何,我怎样才能解决这个问题

听着,如果你想随意把东西换成其他东西,或者到处打字,那你就用错了语言。C#是一种静态类型的语言(现在混合了一些动态),它不允许您将任何旧类型强制转换为任何其他类型

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


或者,如果可以,重构代码以使用电子邮件对象的相同实例。但是,不管怎样,说真的,都是doooeet。

你不能,因为你没有在这里应用多模态,你不能一个一个地将一个对象属性映射到另一个对象属性吗?有时在软件开发中,如果需要多次使用“translator”方法来实现这一点是可以的。为什么不在函数中创建
TicketService.Email
而不是
EmailService.Email
方法会抱怨它需要一个
EmailService.Email
。是的,但问题是,我不知道如何将一个实例转换为另一个实例。我当然可以想出一些方法,比如我可以序列化对象,然后反序列化它,然后在那一刻将它转换为我想要的任何对象。但我只想知道什么是好方法。没必要这么生气重构不是一个选项,因为我只是使用服务。不是我创造的。@Vivendi:
thisguiy.PropertyA=thatguiy.PropertyA;thisGuy.PropertyB=converttopropertyBecauseSuckit(thatGuy.SomeOtherProperty)