【发布时间】:2018-06-18 12:35:00
【问题描述】:
假设我有一个类Foo,它有一个自定义转换器,
public class FooConverter : JsonConverter { ...
FooConverter 存在的原因是普通反序列化器创建的Foo 会导致初始化不正确的实例。所以FooConverter 必须始终用于序列化/反序列化Foo 的实例。
目前,我通过在 Foo 中有一个私有构造函数来实现这一点,它有一个参数:
class Foo
{
private Foo(int _) {}
public Foo(string x, string y) : this(0)
{
...
现在任何让 Json.NET 与 Foo 一起工作的尝试都将导致 JsonSerializationException。除非FooConverter 被注册和使用。
但这看起来真的很乱。我假设必须有一种标记类的方法,例如使用属性来告诉 Json.NET 不要反序列化它? All I can find is the ConstructorHandling enum,但它没有“不使用非公共构造函数”选项。
我是否遗漏了什么,还是我必须继续使用我的“hack”方法?
【问题讨论】: