ThinkGeo.com    |     Documentation    |     Premium Support

Custom PointStyle using serialization?

Hi,


I've been going over the SizedPointStyle example from the ExtendingMapSuiteStyle sample project. And I've gotten my code working, and yet not quite.


I'm saving the features in question in a database table, and I'm utilizing a serialized point style saved as a string for my individual custom point styles. I haven't yet gotten into applying the same technique to line, area and text styles, but will eventually.


Most of the point style definition serializes ok, but it looks like the GeoColor object information is missing from the output XML. Can you verify that this is so, and if so, hopefully point me to a work-around ?


Thanks


 



Hi Lars,


We have some known issue about the XML Serializable, some classes in MapSuite Core could not be serialized to a XML stream, and the GeoColor is one of them. To work around this problem, the simplest way is using BinaryFormatter to serialize this kind of class instead of XmlSerializer, and the code is like this:

BinaryFormatter serializer = new BinaryFormatter();

System.IO.FileStream stream = new System.IO.FileStream(@"C:\temp\1.xml", System.IO.FileMode.OpenOrCreate);
serializer.Serialize(stream, GeoColor.SimpleColors.Red);
stream.Close();

GeoColor color = (GeoColor)serializer.Deserialize(System.IO.File.OpenRead(@"C:\temp\1.xml"));

Sorry for the inconvenience and any more questions please let me know.
Thanks,
Sun 

Hi Sun,


I really don't want to do a binary serialization, but need the serialization to produce an xml formatted entity.


Can you tell me a little bit more about what the issue with GeoColor is, and preferably suggest another work-around ?


Thanks.


 



Lars, 
  
   We do not support XML serialization through the XML Serializer.  Microsoft has said this is a dead technology and has severe limitations.  You could need to roll your own until we get the WCF data contracts in place.  They are the future of our serialization strategy and now that we have the full version of our products that is the next feature we are adding. 
  
   The big issue with the XML Serializer as it stands now is that you need to specify all of the possible sub classes that a property class could have.  For example if I have a ShapeFileFeatureLayer and it has a property of FeatureSource then in our code at the FeatureSource property we would have to add tags to define any possible sub type of the FeatureSource that could be possible.  This is not so bad for the scenario above but we have many places that take types like BaseShape etc and it is literally impossible to deal with it.  Also if you created your own sub class we could not possibly know about it and that would make it fail.  I am not sure about Geocolor by itself but the default serializer from Microsoft is a dead end. 
  
 David