序列化ESRI COM 对象
实现了IXMLSerialize接口的对象可以使用IXMLSerializer进行序列化
IXMLSerializer xmlSerializer = new XMLSerializerClass();
string xmlstring = xmlSerializer.SaveToString(markerSymbol, null, null);
//DeSerialize
IMarkerSymbol markerSymbolDeserialize = xmlSerializer.LoadFromString(xmlstring, null, null) as IMarkerSymbol;
//没有实现IXMLSerialize接口的对象但实现了IPersistStream接口的可考虑使用如下方法
// I'm using FieldInfoClass as an example because it implements the IPersistStream interface but not the IXMLSerialize interface.
IFieldInfo fieldInfo = new FieldInfoClass();
// [Assuming some code here to do something useful with fieldInfo]
// To Serialize to XML
IXMLPersistedObject xmlWrapper = new XMLPersistedObjectClass();
xmlWrapper.Object = fieldInfo;
IXMLSerializer xmlSerializer = new XMLSerializerClass();
string serialzedAsXMLString = xmlSerializer.SaveToString( xmlWrapper, null, null );
// To deserialize /
/ The thing actually deserialized is a IXMLPersistedObject.
(IXMLPersistedObject)xmlSerializer.LoadFromString( serialzedAsXMLString, null, null );
// But the IFieldInfo object is available "hidden" in the Object property.
IFieldInfo fieldInfo = (IFieldInfo)xmlWrapper.Object;