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; } }
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); } }