一部のテストが機能していない理由 (TDD) を理解しようとしており、クラスのシリアル化まで追跡できましたが、なぜ機能していないのかわかりません。単純なバージョンとより複雑なバージョンの 2 つのフレーバーがあります。少し複雑なバージョンでは、Parameter.Value 内に値の配列が含まれます。
単純なバージョンです。これを使用してシリアル化できるクラスがありますJavaScriptSerializer
(MVC が JSON を生成するときに、これがどのように機能するかを想定しています)。生成される構造は次のようになります。
{
"Name": "TestQuery",
"QueryId": 1,
"Parameters": [
{
"Name": "MyString",
"DataType": 0,
"Value": "A String",
"IsArray": false
}],
"Sql": "SELECT * FROM Queries"
}
3 つの C# クラスQuery
( ParameterCollection
a KeyedCollection<String, Parameter>
) と a がありParameter
ます。これらはすべてDataContract
/DataMember
属性でマークアップされDataContractSerializer
、問題なく を介してシリアル化されます。
JavaScriptSerializer
ただし、オブジェクトを上記の JSON に正しくシリアル化しますが、逆シリアル化時にパラメーターがなく、見逃されているようです。
なぜこれらが失敗するのか、それを修正するために何ができるのか、誰にも分かりますか?