Silverlight可以看做精简版的.Net,有着比.Net framework高得多的快速部署能力,以及跨平台的优势。
最近有个想法,就是用Silverlight做一个MongoDB的管理工具。而MongoDB的C#驱动基于.Net 3.5的,依赖了许多Silverlight不具备的库。所以第一步就是移植驱动。
MongoDB C#驱动由两个dll构成:MongoDB.Bson和MongoDB.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