我有一些通过CodeDOM动态创建的代码。我想要实现的是为每个尚未具有不同于System.Object
的基类型的类设置公共基类型。所以我迷上了PopulateBaseTypes
- 事件来相应地设置基类型。但是,事件不会被触发 - 当我明确地调用type.BaseTypes
时,或者代码提供者使用GenerateCodeFromNamespace
构建代码时。从MSDN: CodeTypeDeclaration.PopulateBaseTypes Event开始,我读到了这个:
第一次访问BaseTypes集合时发生。
但是我不知道第一次访问此属性 的时间。我可以将此事件用于此目的吗?
var code = new CodeNamespace(targetNamespace);
// ...
// generate the type-mappings
// ...
foreach (var type in code.Types.Cast<CodeTypeDeclaration>().Where(x => !x.IsEnum))
{
type.PopulateBaseTypes += (sender, e) =>
{
Console.WriteLine(e);
};
Console.WriteLine(type.BaseTypes);
}