gpt4 book ai didi

c++ - 是否可以在非托管代码中使用属性?

转载 作者:行者123 更新时间:2023-11-30 04:37:25 25 4
gpt4 key购买 nike

我有一个非托管的 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,如前所述,我使用的是非托管/ native C++。

最佳答案

Visual C++ 在定义 COM 对象时支持类似的属性表示法。我认为支持最终被取消是因为程序员在需要完全控制时使用 C++ 实现 COM 实现,而编译器在程序员控制之外神奇地做事与此背道而驰。

OTOH IDL 仍然允许您定义元数据,它编译为 C++ 源代码以及包含元数据的类型库,并且可以在运行时检索。

关于c++ - 是否可以在非托管代码中使用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3831788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com