是否可以在非托管代码中使用属性? 我有一个非托管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。