是否可以在非托管代码中使用属性? 我有一个非托管C++应用程序(非托管含义:不使用任何Valtual.NET的东西)。我想用一些元信息来扩展它,看起来我可以使用属性的概念

是否可以在非托管代码中使用属性? 我有一个非托管C++应用程序(非托管含义:不使用任何Valtual.NET的东西)。我想用一些元信息来扩展它,看起来我可以使用属性的概念,c++,visual-studio-2010,attributes,unmanaged,C++,Visual Studio 2010,Attributes,Unmanaged,我真正想要达到的是以下几点。 从这样一个简单的类开始: class Book { public: ... private: string m_name; string m_author; int m_year; }; [id="Book"] class Book { public: ... private: [id="Name", defaultValue="", maxim

我真正想要达到的是以下几点。 从这样一个简单的类开始:

class Book
   {
   public:
      ...
   private:
      string m_name;
      string m_author;
      int    m_year;
   };
[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;
   };
我想构建能够访问类的“元信息”的功能,并使用它动态地构建逻辑,例如

  • 包含3个编辑字段(姓名、作者、年份)的对话框
  • 具有3列的数据网格
  • 序列化逻辑
  • 将此类映射到包含3列的数据库表的逻辑
我最疯狂的梦想是,我想象这样修改这个类:

class Book
   {
   public:
      ...
   private:
      string m_name;
      string m_author;
      int    m_year;
   };
[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/托管代码

如果我可以在非托管代码中使用属性,是否可以这样做?什么是好的起点?(举例……)

此外,在其他平台上的其他编译器中是否可以找到相同(或类似)的概念


我使用VisualStudio 2010,如前所述,非托管/本机C++。

< P>不。C++没有内省或属性。


查找序列化的东西,对于其他需要手动实现的东西,据我所知,

VisualC++在定义COM对象时支持了类似的属性表示法。我认为支持最终被放弃了,因为程序员在需要完全控制时使用C++实现COM实现,而编译器在程序员的控制之外神奇地做事情与此相反。


<> Otoh IDL仍然允许您定义元数据,它编译成C++源代码以及包含元数据的类型库,并且可以在运行时检索。(注:您不必说非托管。它只是C++。不是“非托管C++”。GR微软)完全同意GMan。不幸的是,一旦开始在微软网站上寻找C++,他们就假设默认使用.NET。