对于我的 .NET / C#项目,我需要使用 JSON 库,但我应该依赖于特定的实现。我知道有很多 JSON * c# *库,例如Json.NET,FastJson,简单 Json (simplejson.codeplex.com)等。现在我应该如何抽象出不同的实现,以便我能够在将来的时间内切换库。我无法控制其他库,但我可以完全控制我的项目。寻找你的意见。
答案 0 :(得分:3)
根据您的需要,您可以为您想要使用的任何库创建一个入口点。
public static class Json
{
public static string Serialize(object o)
{
// ...
}
public static T Deserialize<T>(string s)
{
// ...
}
}
答案 1 :(得分:1)
这样做的一种方法是创建一个所有库都具有匹配能力的接口,然后为每个使用该特定库实现接口的实现包装类。每个包装类都必须在一个单独的程序集中,以避免依赖于包装类的库。
然后,当您在运行时选择实现时,您将通过反射实例化包装类来实现。
答案 2 :(得分:1)
最好的方法是创建一个界面。
以下是我们在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);
}