写了一个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)。

Continue reading “写了一个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:Id` 和`z:Ref` 来表示 Id 和 Id 引用。正如在前几篇文章中提到的那样,`DataContractSeriallizer` 对 XML 结构的控制自由度是十分有限的。

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

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

 

Content is available under CC BY-SA 3.0 unless otherwise noted.