在我的模型中是否有任何方法可以反序列化派生类而不创建对Json.NET的依赖关系?

问题描述 投票:1回答:1

我有一个干净的可再发行模型,其中包含许多派生类。为了清楚起见,请参见下面的示例。

class Foo
{
...
}

class BarA:Foo
{
...
}

class BarB:Foo
{
...
}

为了将这些类从Json反序列化为正确的类(例如BarA,而不仅仅是Foo),我通过继承JsonConverter创建了自己的转换器。它非常适合我的应用程序,但这要求其他使用此库的人编写自己的转换器。我不想将转换器包含到我的模型中,因为这将创建对JSON.NET的依赖关系,并且当使用该解决方案的解决方案中的项目具有不同版本的JSON.NET时,从那里就会变得一团糟。

是否有任何干净的方法可以做到这一点,而又不会污染纯.NET模型?

c# .net json.net
1个回答
0
投票

如果您不使用序列化属性,则您的POCO对JSON.Net没有任何依赖。 (至少不要在OP中执行此操作)。调用反序列化器时,可以将可用转换器的列表传递给Deserialize方法。您可以在服务中包装对JSON.Net的依赖关系,但在POCO之外始终会对JSONConverter具有某种依赖关系]

伪C#

JsonConvert.DeserializeObject<YourPOCO>(yourJsonString, new YourFancyConverter()) 

API docs

© www.soinside.com 2019 - 2024. All rights reserved.