大概是想用C#写一个language server给VsCode用,然后发现需要在C#中解析JSON RPC请求。之前在GitHub上大概找了一下,发现貌似有现成的轮子可以用,然而…… Continue reading “突然重复造轮子”
写了一个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
)。
轮子造得差不多了
好吧……我决定自己实现 XmlSerializer 了
重新造轮子 TT
ref = CXuesong/XSerializer/
欢迎围观 TT
最近一直在考虑以下问题:
在使用 `XmlSerializer `以精确控制 XML 格式的同时
- 如何序列化 `Nullable<T>` 格式的数据,并将其保存为 XML 属性(而非元素)?
- 如何序列化对象的引用,使其不会以多个副本的形式保存?
- 在实现上面这两点(尤其是第一点)的时候,不会引入其他的公共辅助属性。
(例如对于第一点,可以通过一个辅助属性,实现 `Nullable<T>` 与 `string` 之间的转换,而 `string` 是可以保存为 XML 属性的。)
其中,第二个问题似乎可以使用 `DataContractSeriallizer` 来解决。然而 `DataContractSeriallizer` 会在生成 XML 时自行为对象确定 Id,并使用 `z:Id` 和`z:Ref` 来表示 Id 和 Id 引用。正如在前几篇文章中提到的那样,`DataContractSeriallizer` 对 XML 结构的控制自由度是十分有限的。
那么,如何才能圆满地解决这些问题呢?
我觉得,可以自己造轮子了。