如何获取基本元素的信息? .Children抛出NotImplementedException

时间:2012-08-20 15:48:22

标签: c# visual-studio visual-studio-extensions c#-code-model

我正在使用Visual Studio的CodeModel来收集代码中接口的信息。

我能够使用类型CodeInterface成功收集有关界面的信息。这个接口公开了一个属性Bases,它允许我发现我的接口继承的接口。

然而,虽然我能够使用.Children逐步完成初始界面的属性或方法。我不能对父接口做同样的事情(抛出NotImplementedException)。

最初我认为这个问题是因为我正在使用FileCodeModel,所以我切换到Project.CodeModel

FileCodeModel fileCM =  
        _applicationObject.ActiveDocument.ProjectItem.FileCodeModel;

我的代码:

CodeModel CM = _applicationObject.ActiveWindow.Project.CodeModel;

CodeInterface myInterface = 
    (CodeInterface)CM.CodeTypeFromFullName( "ConsoleApplication8.IWrapper" );

foreach( CodeElement cE in myInterface.Bases ) {
    if( cE is CodeInterface ) {
        string itemName = cE.FullName;
        CodeInterface parentInterface = 
        (CodeInterface)CM.CodeTypeFromFullName( itemName );
    }
}

1 个答案:

答案 0 :(得分:0)

原来使用的CodeInterface的正确属性是.Members(它仍然是CodeElements的可枚举集