我创建了一个WCF服务并且有两个特定的对象Contact和Driver。驱动程序继承联系人。 Contact对象是较大成员对象的一部分。在代码中,我有以下几点:WCF服务已知类型的对象将不会返回已知类型的属性
<DataContract()>
Public Class Contact
<DataMember()>
Public Name As String
<DataMember()>
Public HomePhone As String
... etc.
End Class
<DataContract()>
Public Class Driver
Inherits Contact
<DataMember()>
Public LicenseNum As String
<DataMember()>
Public LicenseState As String
... etc.
End Class
<DataContract(), KnownType(GetType(Driver))>
Public Class Member
<DataMember()>
Public Info As Contact
<DataMember()>
Public PrimaryStore As Store
... etc.
End Class
因为我对datacontract线knowntype,我可以创建一个成员对象具有信息属性的驱动程序,而不是跟这样我就可以挽救他们的许可信息。
我的问题是,当我创建一个测试项目来查看返回的数据时,当我调用Info属性时,我无法获取许可证信息。
Dim svc as New Service.RetrieveService
Dim sMember as Member
Dim memNum as String = "ABC123"
sMember = svc.GetMember(memNum)
Console.WriteLine("LicenseNumber" & sMember.Info...PROBLEM!!!)
sMember.Info只给我的属性属于我如何可以访问此信息来联系(姓名,HOMEPHONE等),并没有属于驱动程序(LicenseNum,LicenseState等)?
我已经尝试ServiceKnownType添加到我的OperationContract的,如下:
<ServiceContract()>
Public Interface RetrieveMember
<OperationContract(), ServiceKnownType(GetType(Driver))>
Function GetMember(ByVal memberNumber as String) As Member
End Interface
,但它并没有帮助。
工作正常!我只是想知道是否有一些新的方法,因为它是一个被调用的WCF服务。让我想知道调用你的服务的人会如何知道这些特定的项目与服务节目不同。 – 2013-02-14 19:22:30