繁体   English   中英

ASP.NET内核中Serializer的不同Impl

[英]Different Impl of Serializer in ASP.NET Core

我正在使用 ASP.NET 内核,并且我有一个ISerializer接口,它应该提供不同的序列化器实现,有时使用 Newtonsoft,有时使用System.Test.Json

public interface IJsonSerializer
{
    string Serialize<TInput>(TInput input);

    TOutput Deserialize<TOutput>(string input);
};

问题与设置有关,主题之一是使用JsonSerializerOptions ,另一个主题是使用JsonSerializerSettings

如何实现基于两种不同类型的接口?

这些实现在我稍后在 API 中使用的不同项目中。

我尝试使用泛型,但它不起作用。

我认为创建包含这两种设置的设置类型不是一个好主意。

你的建议是什么?

考虑一下这样的事情:

public interface IJsonSettings
{

}

public interface IJsonSerializer<JsonSettings> where JsonSettings : IJsonSettings
{
    void ApplySettings(JsonSettings settings);

    string Serialize<TInput>(TInput input);

    TOutput Deserialize<TOutput>(string input);
}

public class NewtonSettings : IJsonSettings
{
    public JsonSerializerOptions Options;
}

// and then implement something like

public class NewtonSerializer : IJsonSerializer<NewtonSettings>
{
    private Newtonsoft.Json.JsonSerializer serializer;

    public void ApplySettings(NewtonSettings settings)
    {
        throw new System.NotImplementedException();
    }

    public TOutput Deserialize<TOutput>(string input)
    {
        throw new System.NotImplementedException();
    }

    public string Serialize<TInput>(TInput input)
    {
        throw new System.NotImplementedException();
    }
}

空接口背后的原因是允许限制用于 IJsonSerializer 接口的泛型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM