Можно ли использовать атрибуты в неуправляемом коде?

У меня есть неуправляемое приложение C ++ (неуправляемое значение: не использовать ничего из причудливого материала .Net). Начав с чего-то простого класса вроде этого:

class Book
   {
   public:
      ...
   private:
      string m_name;
      string m_author;
      int    m_year;
   };

Я хочу создать функциональность, которая может получить доступ к «метаинформации» класса и использовать ее для динамического построения на ней логики, например

  • диалоговое окно, содержащее 3 поля редактирования (имя , автор, год)
  • сетка данных с 3 столбцами
  • логика сериализации
  • логика, которая отображает этот класс в таблицу базы данных с 3 столбцами
  • ...

В моих самых смелых мечтах я представляю изменение этот класс выглядит следующим образом:

[id="Book"]
class Book
   {
   public:
      ...
   private:
      [id="Name", defaultValue="", maximumLength=100]
      string m_name;

      [id="Author", defaultValue="", maximumLength=100]
      string m_author;

      [id="Year", defaultValue=2000, minimum=1900]
      int    m_year;
   };

А затем возможность получить эту «мета» информацию для создания диалогов, заполнения сеток данных, сериализации и десериализации экземпляров, ...

Но, концепция атрибутов ограничена .Net / управляемый код?

И если бы я мог использовать атрибуты в неуправляемом коде, можно ли было бы сделать что-то подобное? А с чего лучше начать? (примеры, ...)

Также, можно ли найти те же (или похожие) концепции в других компиляторах на других платформах?

Я использую Visual Studio 2010 и, как уже говорилось ранее, неуправляемый / собственный C ++.

1
задан Patrick 30 September 2010 в 14:53
поделиться