예제 #1
0
        private List <ICharacteristic> CharacteristicFromXml(XElement element)
        {
            List <ICharacteristic> res = new List <ICharacteristic>();
            Assembly assemply          = // нахождение сборки осциллографа
                                         AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a => a.FullName.Split(',')[0] == "Oscilloscope");

            if (assemply == null)
            {
                throw new AppDomainUnloadedException("Невозможно найти Oscolloscope.exe");
            }
            Type[] assemblyTypes = assemply.GetTypes();
            foreach (XElement fields in element.Elements())
            {
                Type type = assemblyTypes.FirstOrDefault(t => t.Name == fields.Name.LocalName.Split('.').Last());
                if (type == null)
                {
                    throw new TypeLoadException("Невозможно найти тип " + fields.Name.LocalName);
                }
                ICharacteristic item = (ICharacteristic)Activator.CreateInstance(type, true);
                item.FromXml(fields);
                res.Add(item);
            }

            return(res);
        }