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