PopulateBaseTypes-event未触发

时间:2016-07-27 08:03:46

标签: c# events code-generation codedom

我有一些通过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);
}

0 个答案:

没有答案