public void SetConfigurationItemData(SerializationContext serCtx, object obj, DataItem item)
 {
     ICustomDataItem citem = obj as ICustomDataItem;
     if (citem != null) {
         ClassTypeHandler handler = new ClassTypeHandler (serCtx, this);
         citem.Deserialize (handler, item.ItemData);
     }
     else
         Deserialize (serCtx, obj, item.ItemData);
 }
        public override DataNode Serialize(SerializationContext serCtx, object mapData, object obj)
        {
            if (obj.GetType () != ValueType) {
                DataType subtype = Context.GetConfigurationDataType (obj.GetType ());
                DataItem it = (DataItem) subtype.Serialize (serCtx, mapData, obj);
                it.ItemData.Add (new DataValue ("ctype", subtype.Name));
                it.Name = Name;
                return it;
            }

            DataItem item = new DataItem ();
            item.Name = Name;

            ICustomDataItem citem = obj as ICustomDataItem;
            if (citem != null) {
                ClassTypeHandler handler = new ClassTypeHandler (serCtx, this);
                item.ItemData = citem.Serialize (handler);
            }
            else
                item.ItemData = Serialize (serCtx, obj);
            return item;
        }