不知道该如何回答这个问题:“为什么坚持......”但我没有遇到类似的问题(需要创建一个抽象类,用于发送不同的obj的定义),这就是我想出了用。
我使用一个简单的,基本类的web服务(主机和客户机)作为输入和输出参数的两侧。该类只有两个参数,一个byte()参数和一个字符串参数。基于这两个参数,我可以有效发送每一个可以想象的数据结构,包裹任何文本或数字数据转换成字符串参数(如XML)和包装任何字节数据到这个类的字节字段。
由于这个“包装”被编程,我可以从主机到客户端或客户端到主机发送无限数量的不同数据对象,而无需更改Web服务接口......数据和操作类。
Web服务公开的每个“方法”,从我们简单的Ping()函数到我们最复杂的ResumeDownload()函数,都使用这个相同的基类来发送执行该函数所需的字节和参数,结果。
基本类别I(原谅VB)低于:
Partial Public Class MessageStructure
Inherits Object
Implements System.Runtime.Serialization.IExtensibleDataObject, IDisposable
Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
Private BodySectionField() As Byte
Private TextSectionField As String
Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
Get
Return Me.extensionDataField
End Get
Set(value As System.Runtime.Serialization.ExtensionDataObject)
Me.extensionDataField = value
End Set
End Property
<DataMember(Order:=1)> _
Public Property BodySection() As Byte()
Get
Return Me.BodySectionField
End Get
Set(value As Byte())
Me.BodySectionField = value
End Set
End Property
<DataMember(Order:=0)> _
Public Property TextSection() As String
Get
Return Me.TextSectionField
End Get
Set(value As String)
Me.TextSectionField = value
End Set
End Property
Public Sub New(ByVal text As String, ByVal Bytes As Byte())
BodySectionField = Bytes
TextSectionField = text
End Sub
End Class
希望这可以帮助你。