Newtonsoft Json Deserializer:设置project1程序集引用而不将其添加到您自己的project2中

时间:2019-03-12 14:26:09

标签: c# json.net

在我的 VS2017 EF-Core 2.2解决方案中,我有 3个项目

  1. 后端:WebServer-在 SQLServer 中存储数据,并通过 NewtonSoft.Json
  2. 传递数据
  3. DataModels-用于在 SQLServer (后端)和 SQLite (前端)
  4. 中创建表的类
  5. 前端: Xamarin.Forms 应用-使用 SQLite ,通过 NewtonSoft.Json
  6. 获取数据

后端包含对DataModels项目的项目引用。

由于我的本地 SQLite 数据库仅存储DataModels类中定义的内容的一部分,因此我没有添加对DataModels项目的项目引用,而是在Frontend中创建了Windows 10符号链接项目到DataModels目录,这使我可以修改

之类的DataModel类
namespace DataModels
{
    [Table("Info")] // Used for front- and backend
    public abstract class BaseInfo
    {
        public Guid Id { get; set; }

        [Required]
        [StringLength(200)]
        public string Title { get; set; }

#if FRONTEND // Only available on frontend side
        [NotMapped]
        public bool IsSelected {get; set;}
#endif

#if !FRONTEND // Only available on backend side
        [Required]
        [StringLength(25)]
        public MediaProcessingStateEnum MediaProcessingState { get; set; }
#endif
    }
}

这很好,但是现在我有问题了, 后端使用 NewtonSoft.Json 序列化数据,并在其中添加 $ type 项(因为存在抽象类) 但是当我想使用

在前端端反序列化json内容时
var info = JsonConvert.DeserializeObject<Info>(content, new JsonSerializerSettings
{
        TypeNameHandling = TypeNameHandling.Auto
});

反序列化器无法创建该类的实例,因为缺少到DataModels程序集的(typeinfo)链接!

"Error resolving type specified in JSON 'DataModels.Info, DataModels'. Path '$type', line 1, position 41."

有人可以给我一个想法,如何在不放弃上述概念的情况下解决 NewtonSoft.Json 反序列化器中的“ 缺少参考”问题吗?

0 个答案:

没有答案