Visual C++ 2005内部机理之元数据
1、基于元数据的动态编程:反射、特性
(1)反射Reflection
动态地发现类型,操作类型,创建类型(查询元数据)
(2)特性Attributes
允许程序定义新的元数据,从而在运行时动态地感知环境(创建元数据)
2、元数据Metadata
(1)元数据是“数据的数据”,用于描述基于类型的数据;
(2)元数据是CLI组件合同的描述载体,组件平台的“粘合剂”;
(3)CLI元数据分类:
定义型元数据—描述代码中定义了什么
引用型元数据—描述代码中引用了什么
特性元数据—扩展定义新的元数据
ref class MyClass
{
public:
int data;
}
int main()
{
System::Console::WriteLine(MyClass::typeid); //利用反射来获取类型
}
定义型元数据:
包括ModuleDef、TypeDef、MethodDef、FieldDef、ParamDef、PropertyDef、EventDef等。
引用型元数据:
包括AssemblyRef、ModuleRef、TypeRef、MemberRef等。
我思故我在