私はWSHttpBindingを持つWCFサービスを持っています。クライアントとサーバーの両方が.netプラットフォーム上にあります。私は、オブジェクトをシリアル化し、そのファイルに保存し関数を呼び出していますwcfクラスオブジェクトを逆シリアル化できません
DataContract()>
Public Class Task
<DataMember()>
Public Property UID As String
<DataMember()>
Public Property Name As String
<DataMember()>
Public Property progress As String
<DataMember()>
Public Property Type As Long
<DataMember()>
Public Property Version As String Version
<DataMember()>
Public Property Status As Long
<DataMember()>
Public Property Narr As String
<DataMember()>
Public Property Dt As Date
End Class
:Windows上で私のようにそのタスクをロードし、後に、タスクを取得し、ファイルにそのタスクを保存する機能を呼び出していたアプリケーションを形成その後に、それは簡単としてオブジェクトにロードすることができます。Task.iniで
Function GetSaveTask()
Dim Task_ As serv.Task = ServObj.GetTask() '' Calling Service to get Task
Dim ObStrng As String = Jserialize(Task_)
File.WriteAllText("D:\Task.ini", ObStrng)
End Function
Function LoadTask()
Dim Task_ As serv.Task
Dim ObStrng As String = File.ReadAllText("D:\Task.ini")
Task_ = Deserialize(Of serv.Task)(ObStrng)
End Function
Public Shared Function Jserialize(Of T)(ByVal obb As Object) As Object
Dim serializer As New Web.Script.Serialization.JavaScriptSerializer()
Return serializer.Serialize(obb)
End Function
Public Function Deserialize(Of T)(ByVal obb As String) As Object
Dim JavaScriptSerializer As New Web.Script.Serialization.JavaScriptSerializer()
Return JavaScriptSerializer.Deserialize(Of T)(obb)
End Function
シリアライズされたデータ:
[{"ExtensionData":{},"Dt":"\/Date(1490985000000)\/","Name":"Task-2017",
"Narr":null,"Status":20,"Type":0,"UID":"ABBB-KKKK","Version":"1.0.1.2","progress":20}]
私はSystem.Web.Script.Serialization.JavaScriptSerializer
を使用することができます。 タスク_は簡単にシリアライズしてファイルに保存できます。しかしLoadTask()はデシリアライズし、エラーをスローすることができません:
の種類が定義されていませんパラメーターなしのコンストラクタ「System.Runtime.Serialization.ExtensionDataObject」私はプロキシクラスを作成しようとしました
クラスタスクと同じで、ファイルに保存します。しかし、サービスはDataMemberを更新し続けます。サービス参照を更新するだけで、すべて正常に動作します。したがって、プロキシクラスはオーバーヘッドになり、サービスクラスの変更として更新を続ける必要があります(これはプロジェクト全体では不可能です)。
デシリアライズできないのはなぜですか? ExtensionDataを除く、すべてをロードする方法はありますか?