Changeset 1787


Ignore:
Timestamp:
Aug 9, 2010, 5:30:44 PM (11 years ago)
Author:
kopal
Message:
  • enumerations loading bug fixed
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/Model/XMLSerialization.cs

    r1784 r1787  
    176176                                if (isPrimitive(o))
    177177                                {
    178                                     writer.WriteLine("<value>" + o + "</value>");
     178                                    if (o is Enum)
     179                                    {
     180                                        writer.WriteLine("<value>" + o.GetHashCode() + "</value>");
     181                                    }
     182                                    else
     183                                    {
     184                                        writer.WriteLine("<value>" + o + "</value>");
     185                                    }
    179186                                }
    180187                                else
     
    193200                    else if (isPrimitive(value))
    194201                    {
    195                         writer.WriteLine("<value>" + ReplaceXMLSymbols(value.ToString()) + "</value>");
     202                        if (value is Enum)
     203                        {
     204                            writer.WriteLine("<value>" + value.GetHashCode() + "</value>");
     205                        }
     206                        else
     207                        {
     208                            writer.WriteLine("<value>" + ReplaceXMLSymbols(value.ToString()) + "</value>");
     209                        }                       
    196210                    }
    197211                    else
     
    464478                        {
    465479                            newmember = System.Activator.CreateInstance(Type.GetType(RevertXMLSymbols(membertype.InnerText)));
    466                             newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
    467                                 BindingFlags.NonPublic |
    468                                 BindingFlags.Public |
    469                                 BindingFlags.Instance).SetValue(newObject, newmember);
     480                           
     481                            if (newmember is Enum)
     482                            {
     483                                Int32 result = 0;
     484                                System.Int32.TryParse(RevertXMLSymbols(value.InnerText), out result);
     485                                object newEnumValue = Enum.ToObject(Type.GetType(RevertXMLSymbols(membertype.InnerText)), result);
     486
     487                                newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     488                                    BindingFlags.NonPublic |
     489                                    BindingFlags.Public |
     490                                    BindingFlags.Instance).SetValue(newObject, newEnumValue);                               
     491                            }
     492                            else
     493                            {
     494                                newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     495                                    BindingFlags.NonPublic |
     496                                    BindingFlags.Public |
     497                                    BindingFlags.Instance).SetValue(newObject, newmember);
     498                            }
     499
    470500                        }
    471501                    }
Note: See TracChangeset for help on using the changeset viewer.