C# 使用多个构造函数反序列化对象的推荐方法是什么

C# 使用多个构造函数反序列化对象的推荐方法是什么,c#,ravendb,C#,Ravendb,我有一个包含声明列表的实体(System.Security.claims.claims,)。序列化工作正常,但在反序列化方面,由于以下异常,我陷入了困境: Raven.Imports.Newtonsoft.Json.JsonSerializationException:找不到用于System.Security.Claims.Claim类型的构造函数。一个类应该有一个默认构造函数、一个带参数的构造函数或一个标记有JsonConstructor属性的构造函数 因为这不是我自己的类,所以我不能简单地添

我有一个包含声明列表的实体(
System.Security.claims.claims
,)。序列化工作正常,但在反序列化方面,由于以下异常,我陷入了困境:

Raven.Imports.Newtonsoft.Json.JsonSerializationException:找不到用于System.Security.Claims.Claim类型的构造函数。一个类应该有一个默认构造函数、一个带参数的构造函数或一个标记有JsonConstructor属性的构造函数

因为这不是我自己的类,所以我不能简单地添加默认构造函数、删除除一个构造函数之外的所有构造函数或添加JsonConstructor属性

有没有办法告诉ravendb/Newtonsoft.Json使用什么构造函数,例如为这个特定的数据类型添加约定

如果不可能做到这一点,那么最好的办法是什么?我想到的选项是:

  • 为此数据类型添加自定义JsonConverter
  • 为Claims类创建包装并隐藏除一个构造函数之外的所有构造函数
  • 创建自定义索赔类,稍后将其转换为MS索赔

特别针对
索赔
对象(注意,我提供了一个答案…)。我不知道这和Raven的使用有什么关系,所以犹豫了,谢谢James。我看到了你的答案,但真的想知道ravendb是否可以配置为直接解决它,而不是使用单独的JsonConverter。然而,如果ravendb本身没有选择,那么您的解决方案将是我的第一选择。