示例#1
0
 private static void ParserOnCreateObject(object sender, GXCreateObjectEventArgs e)
 {
     if (typeof(GXSerializedDevice) == e.Type)
     {
         e.Object = new GXSerializedDevice();
     }
     else if (typeof(GXDeviceList) == e.Type)
     {
         e.Object = new GXDeviceList();
     }
     else if (typeof(GXDeviceGroup) == e.Type)
     {
         e.Object = new GXDeviceGroup();
     }
     else
     {
         e.Object = null;
     }
 }
示例#2
0
 static void ParserOnCreateObject(object sender, GXCreateObjectEventArgs e)
 {
     string str;
     Type type;
     if (e.Type == typeof(GXDevice))
     {
         string protocol = (string)e.Parameters["ProtocolName"];
         GXProtocolAddIn addIn = GXDeviceList.Protocols[protocol];
         GXDevice dev = GXJsonParser.CreateInstance(addIn.GetDeviceType()) as GXDevice;
         if (ExtraTypes.ContainsKey(dev.GetType()))
         {
             e.ExtraTypes.AddRange(ExtraTypes[dev.GetType()]);
         }
         else
         {
             foreach (Type it in addIn.GetType().Assembly.GetTypes())
             {
                 if (!it.IsAbstract && it.IsClass)
                 {
                     e.ExtraTypes.Add(it);
                 }
             }
             ExtraTypes.Add(dev.GetType(), e.ExtraTypes);
         }
         dev.m_AddIn = addIn;
         e.Object = dev;
     }
     else if (e.Type == typeof(GXMediaType))
     {
         e.Object = new GXMediaType();
     }
     else if (e.Type == typeof(GXParameter))
     {
         e.Object = new GXParameter();
     }
     else if (e.Type == typeof(GXValueItem))
     {
         e.Object = new GXValueItem();
     }
     else if (typeof(GXProperty) == e.Type)
     {
         str = (string)e.Parameters["Type"];
         type = e.ExtraTypes.Find(q => q.FullName == str);
         if (type != null)
         {
             e.Object = GXJsonParser.CreateInstance(type);
         }
         else
         {
             e.Object = GXJsonParser.CreateInstance(Type.GetType((string)e.Parameters["Type"]));
         }
     }
     else if (typeof(GXCategory).IsAssignableFrom(e.Type))
     {
         str = (string)e.Parameters["Type"];
         if (str == typeof(GXCategory).FullName)
         {
             e.Object = new GXCategory();
         }
         else
         {
             type = e.ExtraTypes.Find(q => q.FullName == str);
             if (type != null)
             {
                 e.Object = GXJsonParser.CreateInstance(type);
             }
             else
             {
                 e.Object = GXJsonParser.CreateInstance(Type.GetType((string)e.Parameters["Type"]));
             }
         }
     }
     else if (typeof(GXTable).IsAssignableFrom(e.Type))
     {
         str = (string)e.Parameters["TType"];
         if (str == typeof(GXTable).FullName)
         {
             e.Object = new GXTable();
         }
         else
         {
             type = e.ExtraTypes.Find(q => q.FullName == str);
             if (type != null)
             {
                 e.Object = GXJsonParser.CreateInstance(type);
             }
             else
             {
                 e.Object = GXJsonParser.CreateInstance(Type.GetType(str));
             }
         }
     }
     if (e.Object == null)
     {
         e.Object = GXJsonParser.CreateInstance(e.Type);
     }
 }