代码改变世界

MongoDB Driver for Silverlight打造过程

2012-05-04 12:12  贼寇在何方  阅读(412)  评论(0编辑  收藏  举报

Silverlight可以看做精简版的.Net,有着比.Net framework高得多的快速部署能力,以及跨平台的优势。

最近有个想法,就是用Silverlight做一个MongoDB的管理工具。而MongoDB的C#驱动基于.Net 3.5的,依赖了许多Silverlight不具备的库。所以第一步就是移植驱动。

 

MongoDB C#驱动由两个dll构成:MongoDB.BsonMongoDB.Driver

创建一个Silverlight5的项目,然后在解决方案下新建Bson和Driver的类库项目。
复制原有的代码文件,并修改项目属性中的程序集名称,默认命名空间和程序集信息,与原项目保持一致。

 

一些Silverlight不具备的类库,需要替代:

Hashtable -> Dictionary<object, object>

ArrayList -> List<object>

Queue -> Queue<object>

Stack -> Stack<object>

System.Drawing.Image ->System.Windows.Controls.Image

 

一些Silverlight过时或者不具备的集合,把他从序列化器中删去:

ListDictionary
OrderedDictionary
SortedList
等等

抛出异常构造方法包含SerializationInfo的,一律注释掉:

public TruncationException(SerializationInfo info, StreamingContext context)
            : base(info, context)

 

Silverlight中没有Serializable特性

SerializableAttribute
FileFormatException : FormatException

 

其他类的处理方法:

Bitmap:在BsonDefaultSerializer.cs的61行

 

Size:在BsonDefaultSerializer.cs的92行

 

RuntimeHelper

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\mscorlib.dll