0
私は、サービスとクライアントの間で共有されるプロジェクトにClass2とClass1を持っています。WCFサービスから継承したクラスが返されない
<DataContract> _
Public Class Class1
<DataMember> _
Public Property Test
End Class
<DataContract()> _
Public Class Class2(Of ReturnType)
<DataMember> _
Public Property Test As String
<DataMember()> _
Public Property Items() As ReturnType()
End Class
これは私のサービス・インターフェースである:
<ServiceContract(Name:="Service")> _
Public Interface IService
<OperationContract()> _
Function GetStuff() As Class2(Of Class1)
End Interface
そして、私のサービスの実装:私のサービスプロジェクトで
Public Class Service
Implements IService
Public Function GetStuff() As Class2(Of Class1) Implements IService.GetStuff
Dim results As Class2(Of Class1) = New Class2(Of Class1)
Dim oClass1 As New Class1
results.Test = "test"
oClass1.Test = "test"
results.Items = {oClass1}
Return results
End Function
End Class
私も共有クラスから継承するクラス1を持っている:
Public Class Class1
Inherits [Shared].Entities.Class1
End Class
私のクライアントコード:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim oEndpoint As New System.ServiceModel.EndpointAddress(New Uri("net.tcp://localhost/service"), _
System.ServiceModel.EndpointIdentity.CreateUpnIdentity(""))
Dim oClient As New ServiceClient("IService", oEndpoint)
Dim oList As Class2(Of Class1) = oClient.GetStuff()
MessageBox.Show(oList.Test)
MessageBox.Show(oList.Items.Length.ToString)
End Sub
Public Class ServiceClient
Inherits System.ServiceModel.ClientBase(Of IService)
Implements IService
Public Sub New(ByVal endpointConfigurationName As String, _
ByVal endpoint As System.ServiceModel.EndpointAddress)
MyBase.New(endpointConfigurationName, endpoint)
End Sub
Public Function GetStuff() As Class2(Of Class1) Implements IService.GetStuff
Dim oRet As Class2(Of Class1) = MyBase.Channel.GetStuff()
Return oRet
End Function
End Class
は、2つのメッセージボックス内のボタンクリックした結果を文字列(予想)「テスト」と文字列0と1とのいずれかを実行している(私は1を期待)。継承したClass1を私のサービスプロジェクトから除外すると、期待通りに動作します。
このプロジェクトはこのように何年も働いていますが、私が最近変更を加えて再構築して作業を停止したときだけです。これをどのように機能させることができますか?明らかに私の実際のプロジェクトでは、サービスプロジェクトのClass1には、使いたい機能がいくつか追加されています。