我有一个干净的可再发行模型,其中包含许多派生类。为了清楚起见,请参见下面的示例。
class Foo
{
...
}
class BarA:Foo
{
...
}
class BarB:Foo
{
...
}
为了将这些类从Json反序列化为正确的类(例如BarA,而不仅仅是Foo),我通过继承JsonConverter创建了自己的转换器。它非常适合我的应用程序,但这要求其他使用此库的人编写自己的转换器。我不想将转换器包含到我的模型中,因为这将创建对JSON.NET的依赖关系,并且当使用该解决方案的解决方案中的项目具有不同版本的JSON.NET时,从那里就会变得一团糟。
是否有任何干净的方法可以做到这一点,而又不会污染纯.NET模型?
如果您不使用序列化属性,则您的POCO对JSON.Net没有任何依赖。 (至少不要在OP中执行此操作)。调用反序列化器时,可以将可用转换器的列表传递给Deserialize方法。您可以在服务中包装对JSON.Net的依赖关系,但在POCO之外始终会对JSONConverter具有某种依赖关系]
伪C#
JsonConvert.DeserializeObject<YourPOCO>(yourJsonString, new YourFancyConverter())