65.9K
CodeProject 正在变化。 阅读更多。
Home

从外部元数据生成类型

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.25/5 (4投票s)

2008年5月31日

CPOL

1分钟阅读

viewsIcon

15706

downloadIcon

83

从外部元数据生成类型。

引言

这是一个用于创建在外部元数据中定义的类型的解决方案。其想法是在不编译或更改代码的情况下定义可在应用程序中使用的类型。

想法

除了定义的类型(例如,在外部 XML 文件中),数据绑定和数据库访问可以存储在外部元数据中。因此,通过拥有这样的元数据并使用 Designer Hosting,可以提供一个非常有用的定制解决方案。应用程序的高级用户可以设计和使用他们自己的,例如,WinForms,而无需编写任何代码。

Using the Code

涉及几个类。主要的类是 TypeMetaData,它描述了类型。属性 AssemblyNameModuleNameTypeName 是必需的,因为它们用于类型创建过程中。所有属性都存储在 List Properties 中,其项目是 PropertyMetaData 类型。PropertyMetaData 描述了属性类型。由于这只是一个基本示例,我们只有属性名称和属性类型。此外,我们可以添加属性或任何其他相关元数据。类 TypeXmlSerializer 用于将类型元数据序列化和反序列化为 XML。类型生成发生在类 TypeGenerator 中。有一个方法 GenerateType(TypeMetaData metaData),其职责是从给定的元数据生成类型。

以下是使用 TypeGenerator 的示例

//
// Generating type from xml
//

OpenFileDialog dlg = new OpenFileDialog();
dlg.DefaultExt = "xml";
dlg.Filter = "XML Files|*.xml";

if (dlg.ShowDialog() == DialogResult.OK)
{

   TypeMetaData meta = TypeXmlSerializer.DeSerialize(dlg.FileName);
   object newType = TypeGenerator.GenerateType(meta);
}

TypeMetaData 应该从外部源反序列化,然后用于生成类型。

结论

我希望这篇文章对您有所帮助,并能为任何需要设计和实现动态类型创建的人提供思路。

© . All rights reserved.