Работа с типом Object: как лучше реализовать приведение типов и сравнение - C#
Формулировка задачи:
Добрый день
Такая задача, есть COM-объект возвращающий по запросу некие переменные другой программы, которые могут быть типа: Integer, String, Double, Float, Boolean.
Логика программы определяется пользователем во внешнем файле, то есть порядок таков:
Считать файл настройки
<Tag type="float">LICA214.PV</Tag>
Считать файл поведения
<Condition type="More"> <Tag>LICA214.PV</Tag> <Arg>100</Arg> </Condition> <Action> <Activity type="SendMessage" value="Alarm!"/> </Action>
Далее в цикле обратиться к СOM-за значением. Проверить условие Condition, если верно выполнить Activity
Ясно что в .net все эти переменные попадают упакованными в Object (впрочем заранее известно какого типа эти переменные), а XML-файле в String. Трудности начинаются когда необходимо сравнить эти переменные (на равенство, больше, меньше), как лучше реализовать приведение типов и сравнение?Решение задачи: «Работа с типом Object: как лучше реализовать приведение типов и сравнение»
textual
Листинг программы
private static int CompareTo(object value, object arg) { try { /*Используем рефлексию для сравнения типов*/ Type type = value.GetType(); System.Reflection.MethodInfo minfo = type.GetMethod("CompareTo", new Type[] { typeof(object) }); int result = (int)minfo.Invoke(value, new object[] { arg }); return result; } catch (Exception ex) { throw new Exception(string.Format("Ошибка при попытке сравнить [{0}] типа [{1}] c [{2}] типа [{3}]. " + ex.Message, value, value.GetType().Name, arg, arg.GetType().Name) ); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д