写了一个MediaWiki客户端库

基于.NET PCL的一个异步访问的MediaWiki客户端库,支持.NET Framework 4.5、ASP.NET Core 1.0、Xamarin.iOS和Xamarin.Android,MediaWiki API最低尝试过MediaWiki 1.19 (Wikia)。欢迎前来围观!

坑址:https://github.com/CXuesong/WikiClientLibrary

其他MediaWiki客户端库:https://www.mediawiki.org/wiki/API:Client_code

宣传一下:好像还没想好可以怎么宣传。总之,支持大部分常见的增删查改API,支持生成器,支持文件上传,查询结果无痛分页(使用 IAsyncEnumerable)。

继续阅读写了一个MediaWiki客户端库

好吧……我决定自己实现 XmlSerializer 了

重新造轮子 TT

ref = CXuesong/XSerializer/

欢迎围观 TT

最近一直在考虑以下问题:

在使用 XmlSerializer 以精确控制 XML 格式的同时

  1. 如何序列化 Nullable<T> 格式的数据,并将其保存为 XML 属性(而非元素)?
  2. 如何序列化对象的引用,使其不会以多个副本的形式保存?
  3. 在实现上面这两点(尤其是第一点)的时候,不会引入其他的公共辅助属性。
    (例如对于第一点,可以通过一个辅助属性,实现 Nullable<T>string 之间的转换,而 string 是可以保存为 XML 属性的。)

其中,第二个问题似乎可以使用 DataContractSeriallizer 来解决。然而 DataContractSeriallizer 会在生成 XML 时自行为对象确定 Id,并使用 z:Idz:Ref 来表示 Id 和 Id 引用。正如在前几篇文章中提到的那样,DataContractSeriallizer 对 XML 结构的控制自由度是十分有限的。

那么,如何才能圆满地解决这些问题呢?

我觉得,可以自己造轮子了。