ここに投稿されたすべてのソリューションを調べて試しましたが、役に立ちませんでした。
私の問題は次のとおりです。
Web ソリューション (ASP.NET MVC 3 C# / Razor) では、Json.Net を使用して一部のレポートに表示されるデータをシリアル化し、WPF アプリケーションに送信できるようにしています。これらのレポートの結果は、Model オブジェクトのコレクションです。
私は WPF アプリケーションに同じモデル オブジェクトを持っているので、Json 文字列を逆シリアル化するときに、それに応じて結果をバインドしたいと思います (元のモデル オブジェクトを保持します)。
アセンブリ名とオブジェクト型は、両端 (Web / アプリ) で異なります - 異なる名前空間です。
これが私がこれまでに試したことです:
Web ソリューション:
// MyModel
public class MyModel
{
public long Id { get; set; }
public string Name { get; set; }
}
...
// data = IEnumerable<MyModel>
var jsonData = JsonConvert.SerializeObject(data.ToArray(), data.ToArray().GetType(),
new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
アプリで:
// MyModel
public class MyModel
{
[JsonProperty("Id")]
public long Id { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
}
...
var jsonArray = JsonConvert.DeserializeObject(e.jsonObject,
null,
new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All,
Binder = new MySerializationBinder()
});
...
public class MySerializationBinder : DefaultSerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
return typeof(MyModel);
}
}
誰か私に手を貸してくれませんか?
ありがとう!
アップデート
@Marc Gravellのコメントによると:
ここで主な問題について言及するのを忘れていました。オブジェクト型を WPF アプリに送信する必要があります。これは、リスナーがさまざまなモデルのコレクションである多くのレポートからのデータを期待するためです。したがって、それをバインドするときに、どのオブジェクトをバインドする必要があるかがわかります。