none
Custom attributes from XML RRS feed

  • Общие обсуждения

  • Доброго дня, уважаемые форумчане. Подскажите пожалуйста решение такой проблемы. Есть допустим строка в XML вида

    <FieldName attribute="AAAA">Value</FieldName> 

    которая описывает свойство сериализованного класса. Вопрос - как восстановить атрибут метода при десериализации из этого ХМL? Я при обходе нодов в коде создаю класс, присваиваю значение свойствам по их имени, но как установить атрибут не понимаю. Рефлексия как я вижу возвращает коллекцию уже существующих атрибутов. 

    чтобы из строки выше мог получить 

    [MyCustomAttribute(Value= "AAAA")]

    string FieldName {get;set;}

    Помогите разобраться. Спасибо.

    10 февраля 2014 г. 7:52

Все ответы

  • Объясните, зачем вам понадобилось сериализовать атрибут и зачем его менять в рантайме?

    Атрибут, по сути своей, задаётся при разработке и дальше сохраняется неизменным в метаданных.

    Если нужно менять значение и сериализовать/десериализовать его, то может лучше вместо атрибута сделать обычное свойство?

    string MyCustomProp {get;set;}
    
    string FieldName {get;set;}

    Не?

    10 февраля 2014 г. 9:33
  • К сожалению не придумал другого способа, как заданием атрибута. Подскажите другой путь - с удовольствием выслушаю. Собственно иерархия у меня:

    class Node{
       string Name{get;set;}
       bool Connected{get;set;}
    
       Items[] Tags{get;set;}
    }
    
    
    class Items{
       [MyAttribute(Control=False)]
       string TagName{get;set;}
       string TagItem{get;set;}
       int SrvHandle {get;set;} 
       dynamic Value {get;set;}
    }
    

    Иерархия описывающая набор тэгов для конкретного устройства для регистрации в сервисе OPC. Из набора Items[] необходимо контролировать постоянно только некоторые Item. Для определения, какие именно - использую атрибут с флагом. Конфигурация отдельного нода представлена XML файлом и подхватывается сервисом при добавлении или изменении. Вот и вопрос - как формировать обьект класса Items из XML файла с использованием атрибутов.

    Спасибо.

    10 февраля 2014 г. 10:39