c# – 无法将MyObject类型的对象强制转换为MyObject类型

c# – 无法将MyObject类型的对象强制转换为MyObject类型,第1张

概述我有这种情况,我在C#中使用的Web服务方法返回一个Business对象,当使用以下代码调用webservice方法时,我在reference.cs类中得到异常“无法将ContactInfo类型的对象强制转换为类型ContactInfo”的网络参考 码: ContactInfo contactInfo = new ContactInfo();Contact contact = new Conta 我有这种情况,我在C#中使用的Web服务方法返回一个Business对象,当使用以下代码调用webservice方法时,我在reference.cs类中得到异常“无法将ContactInfo类型的对象强制转换为类型ContactInfo”的网络参考

码:

ContactInfo contactInfo = new ContactInfo();Contact contact = new Contact();contactInfo = contact.Load(this.ContactID.Value);

任何帮助将非常感激.

解决方法 这是因为其中一个ContactInfo对象是Web服务代理,并且位于不同的命名空间中.

这是asmx风格的Web服务的一个已知问题.在过去,我已经实现了自动浅拷贝来解决它(here’s how,虽然如果我再次这样做,我可能会看一下AutoMapper).

例如,如果您有一个包含以下类的程序集:

MyProject.ContactInfo

并从web方法返回它的实例:

public class DoSomethingService : System.Web.Services.WebService{    public MyProject.ContactInfo GetContactInfo(int ID)    {        // Code here...    }}

然后,当您将Web引用添加到客户端项目时,实际上是这样的:

MyClIEntProject.DoSomethingService.ContactInfo

这意味着如果在您的客户端应用程序中调用Web服务来获取ContactInfo,则会出现以下情况:

namespace MyClIEntProject{    public class MyClIEntClass    {        public voID AskWebServiceForContactInfo()        {            using (var service = new DoSomethingService())            {                MyClIEntProject.DoSomethingService.ContactInfo contactInfo = service.GetContactInfo(1);                // ERROR: You can't cast this:                MyProject.ContactInfo localContactInfo = contactInfo;            }        }    }}

它是在我使用我的Shallowcopy类的最后一行:

namespace MyClIEntProject{    public class MyClIEntClass    {        public voID AskWebServiceForContactInfo()        {            using (var service = new DoSomethingService())            {                MyClIEntProject.DoSomethingService.ContactInfo contactInfo = service.GetContactInfo(1);                // We actually get a new object here,of the correct namespace                MyProject.ContactInfo localContactInfo = Shallowcopy.copy<MyClIEntProject.DoSomethingService.ContactInfo,MyProject.ContactInfo>(contactInfo);            }        }    }}

注意这只能起作用,因为代理类和“真实”类具有完全相同的属性(一个是由Visual Studio生成的).

总结

以上是内存溢出为你收集整理的c# – 无法将MyObject类型的对象强制转换为MyObject类型全部内容,希望文章能够帮你解决c# – 无法将MyObject类型的对象强制转换为MyObject类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1249075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存