Changeset 1903


Ignore:
Timestamp:
Sep 3, 2010, 10:41:10 AM (11 years ago)
Author:
kopal
Message:
  • removed version numbers of assemblies of persisted model elements so that models can be opened from newer versions than the created one too
Location:
trunk/CrypPlugins/WorkspaceManager/Model
Files:
5 edited

Legend:

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

    r1755 r1903  
    8383            {
    8484                this.ConnectionTypeName = value.FullName;
    85                 this.ConnectionTypeAssemblyName = value.Assembly.FullName;
     85                this.ConnectionTypeAssemblyName = value.Assembly.GetName().Name;
    8686            }
    8787        }
  • trunk/CrypPlugins/WorkspaceManager/Model/ConnectorModel.cs

    r1887 r1903  
    8181            {
    8282                this.ConnectorTypeName = value.FullName;
    83                 this.ConnectorTypeAssemblyName = value.Assembly.FullName;
     83                this.ConnectorTypeAssemblyName = value.Assembly.GetName().Name;
    8484            }
    8585        }
  • trunk/CrypPlugins/WorkspaceManager/Model/ModelPersistance.cs

    r1895 r1903  
    4242            PersistantModel persistantModel = (PersistantModel)XMLSerialization.XMLSerialization.Deserialize(filename,true);
    4343            WorkspaceModel workspacemodel = persistantModel.WorkspaceModel;
    44             workspacemodel.WorkspaceManagerEditor = workspaceManagerEditor;
     44            workspacemodel.WorkspaceManagerEditor = workspaceManagerEditor;           
    4545
    4646            //restore all settings of each plugin
     
    166166        {
    167167            PersistantModel persistantModel = new PersistantModel();
    168             persistantModel.WorkspaceModel = workspaceModel;
     168            persistantModel.WorkspaceModel = workspaceModel;           
    169169
    170170            //Save all Settings of each Plugin
  • trunk/CrypPlugins/WorkspaceManager/Model/PluginModel.cs

    r1895 r1903  
    124124            set{
    125125                this.PluginTypeName = value.FullName;
    126                 this.PluginTypeAssemblyName = value.Assembly.FullName;
     126                this.PluginTypeAssemblyName = value.Assembly.GetName().Name;
    127127            }
    128128        }
  • trunk/CrypPlugins/WorkspaceManager/Model/XMLSerialization.cs

    r1891 r1903  
    161161                    object value = obj.GetType().GetField(memberInfo.Name, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance).GetValue(obj);
    162162
     163                    if (value is System.Collections.IList && value.GetType().IsGenericType)
     164                    {
     165                        string gentype = value.GetType().GetGenericArguments()[0].FullName;
     166                        type = "System.Collections.Generic.List;" + gentype;
     167                    }
     168
    163169                    writer.WriteLine("<member>");
    164170                    writer.WriteLine("<name>" + ReplaceXMLSymbols(memberInfo.Name) + "</name>");
     
    170176                        writer.WriteLine("<value><![CDATA[" + ReplaceXMLSymbols(Convert.ToBase64String(bytes)) + "]]></value>");
    171177                    }
     178                    /*else if (value is System.Collections.IList && value.GetType().IsGenericType)
     179                    {
     180                        writer.WriteLine("<generictype>" + value.GetType().GetGenericArguments()[0].FullName + "</generictype>");
     181                        writer.WriteLine("<genericlist>");
     182                        foreach (object o in (System.Collections.IList)value)
     183                        {
     184                            if (o.GetType().IsSerializable)
     185                            {
     186                               
     187                                writer.WriteLine("<entry>");
     188                                writer.WriteLine("<type>" + o.GetType().FullName + "</type>");
     189                                if (isPrimitive(o))
     190                                {
     191                                    if (o is Enum)
     192                                    {
     193                                        writer.WriteLine("<value>" + o.GetHashCode() + "</value>");
     194                                    }
     195                                    else
     196                                    {
     197                                        writer.WriteLine("<value>" + o + "</value>");
     198                                    }
     199                                }
     200                                else
     201                                {
     202                                    writer.WriteLine("<reference>" + o.GetHashCode() + "</reference>");
     203                                }
     204                                writer.WriteLine("</entry>");
     205                            }
     206                        }
     207                        writer.WriteLine("</genericlist>");
     208                    }*/
    172209                    else if (value is System.Collections.IList)
    173210                    {
     
    533570                    else if (member.ChildNodes[2].Name.Equals("list"))
    534571                    {
    535                         newmember = System.Activator.CreateInstance(Type.GetType(RevertXMLSymbols(membertype.InnerText)));
    536                         newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
    537                                 BindingFlags.NonPublic |
    538                                 BindingFlags.Public |
    539                                 BindingFlags.Instance).SetValue(newObject, newmember);
     572                        String[] types = RevertXMLSymbols(membertype.InnerText).Split(';');
     573
     574                        if (types.Length == 1)
     575                        {
     576                            newmember = System.Activator.CreateInstance(Type.GetType(types[0]));
     577                            newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     578                                    BindingFlags.NonPublic |
     579                                    BindingFlags.Public |
     580                                    BindingFlags.Instance).SetValue(newObject, newmember);
     581                        }
     582                        else if (types.Length == 2)
     583                        {   //we have 2 types, that means that we have a generic list with generic type types[1]
     584                            Type t = typeof(System.Collections.Generic.List<>);
     585                            Type[] typeArgs = { Type.GetType(types[1]) };
     586                            Type constructed = t.MakeGenericType(typeArgs);
     587                            newmember = Activator.CreateInstance(constructed);
     588                            newObject.GetType().GetField(RevertXMLSymbols(membername.InnerText),
     589                                    BindingFlags.NonPublic |
     590                                    BindingFlags.Public |
     591                                    BindingFlags.Instance).SetValue(newObject, newmember);
     592                        }
     593                        else
     594                        {
     595                            throw new Exception("Expected 1 or 2 types for list; But found:" + types.Length);
     596                        }
    540597
    541598                        foreach (XmlNode entry in member.ChildNodes[2].ChildNodes)
Note: See TracChangeset for help on using the changeset viewer.