我已经查看并尝试了此处发布的每个解决方案,但均无济于事。
我的问题是:
在 Web 解决方案(ASP.NET MVC 3 C#/Razor)上,我使用 Json.Net 序列化显示在某些报告上的数据,以便能够将其发送到 WPF 应用程序。这些报告结果是模型对象的集合。
我在 WPF 应用程序上有相同的模型对象,所以当我反序列化 Json 字符串时,我想相应地绑定结果(保留原始模型对象)。
每一端(Web / App)的程序集名称和对象类型都不同 - 不同的命名空间。
这是我到目前为止所尝试的:
网络解决方案:
// 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 评论:
我忘了在这里提到主要问题。我需要将 Object 类型发送到 WPF 应用程序,因为侦听器会期望来自许多报告的数据——这些报告是不同模型的集合。所以,当绑定回来时,我知道应该绑定哪个对象。