如何抽象出不同的 JSON 库实现
对于我的 .NET/C# 项目,我需要使用 JSON 库,但我应该依赖于特定的实现。我知道有很多 JSON *c#* 库,例如 Json.NET,FastJson,简单的Json(simplejson.codeplex.com) 等。现在我应该如何抽象出不同的实现,以便我将来能够切换库。我无法控制其他库,但我可以完全控制我的项目。寻找您的意见。
For my .NET/C# project, I need to use a JSON library but I should be dependent on a specific implementation. I know that there are plenty of JSON *c#* libraries out there like Json.NET, FastJson, Simple Json (simplejson.codeplex.com), etc. Now how should I abstract away different implementations so that I will be able to switch libraries in a future time. I have no control on other libraries but I have full control on my project. Looking for your opinions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据您的需要,您可以为您想要使用的任何库创建一个入口点。
Depending on your needs you can create a single entry point to whatever library you wish to use.
实现此目的的一种方法是创建一个所有库都能够匹配的接口,然后为每个使用该特定库实现该接口的接口实现一个包装类。每个包装类必须位于单独的程序集中,以避免对包装类的库的依赖。
然后,当您在运行时选择实现时,您将通过反射实例化包装器类来完成它。
One way to do this would be to create an interface that all libraries have the capability of matching, then implementing a wrapper class for each that implements the interface using that particular library. Each wrapper class will have to be in a separate assembly to avoid a dependency on the wrapper class's library.
Then, when you choose an implementation at runtime, you'll do it by instantiating the wrapper class through reflection.
最好的方法是创建一个接口。
以下是我们在 Facebook C# SDK (http://facebooksdk.codeplex.com) 中执行此操作的方法
Best way is to create an interface.
Here is how we do it in Facebook C# SDK (http://facebooksdk.codeplex.com)