将自定义对象传递给Web服务

Ben*_*key 13 .net c# web-services

我需要将自定义对象传递给远程Web服务.我已经读过可能需要实现ISerializable,但我已经这样做了,而且遇到了困难.C#将自定义对象传递给Web服务方法的正确方法是什么?

Jim*_*ott 8

作为服务请求的一部分提供的参数必须使用[Serializable]标记,并且基于之前发布的一些答案,您还需要确保自定义对象在构造函数中不包含任何参数.

还要记住,类中的任何逻辑都不会在客户端创建的代理类中创建.您将在客户端看到的所有内容都是默认构造函数和属性.因此,如果向自定义对象添加方法,请记住客户端不会看到它们或能够使用它们.

对于任何可能放入任何属性的逻辑,同样如此.

例

[Serializable]
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 吉姆,对不起,但[Serializable]与网络服务无关. (4认同)
  • @fretje:不,它没有.请参阅http://msdn.microsoft.com/en-us/library/182eeyhh(VS.85).aspx. (3认同)

Dre*_*nic 5

看起来像这个问题的副本

无论如何,WS交互中涉及的所有对象都应该是XML可序列化的,而不是ISerializable(这是二进制序列化).此外,它们应该在服务契约(WSDL)中描述,否则客户端将无法使用它们.本文对于理解XML Web Services的XML序列化非常有用.

但是,如果你在谈论真正的自定义对象(即任何类型).您应该考虑以二进制形式传递它们:或者作为base64编码,或者作为附件.我链接的问题有一个答案如何做到这一点.