如何抽象不同的JSON库实现
本文关键字:JSON 实现 何抽象 抽象 | 更新日期: 2023-09-27 17:53:07
为我的。. net/c# 项目,我需要使用JSON库,但我应该依赖于特定的实现。我知道有很多像JSON这样的JSON *c#*库。. NET、FastJson、Simple Json (simplejson.codeplex.com)等。现在,我应该如何抽象出不同的实现,以便将来能够切换库。我对其他图书馆没有控制,但我对我的项目有完全的控制。征求您的意见
根据您的需要,您可以创建到您希望使用的任何库的单个入口点。
public static class Json
{
public static string Serialize(object o)
{
// ...
}
public static T Deserialize<T>(string s)
{
// ...
}
}
这样做的一种方法是创建一个所有库都具有匹配能力的接口,然后为每个使用特定库实现接口的接口实现一个包装器类。每个包装器类必须在一个单独的程序集中,以避免依赖于包装器类的库。
然后,当您在运行时选择实现时,您将通过反射实例化包装器类来实现。
最好的方法是创建一个接口。
下面是我们如何在Facebook c# SDK中实现它(http://facebooksdk.codeplex.com)
public interface IJsonSerializer
{
string SerializeObject(object obj);
object DeserializeObject(string json, Type type);
T DeserializeObject<T>(string json);
object DeserializeObject(string json);
}