Работа с типом 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)
- );
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д