Как получить информацию о базовом элементе? . Дети бросают NotImplementedException

Я использую CodeModel Visual Studio для сбора информации об интерфейсах в коде.

Я могу успешно собрать информацию об интерфейсе, используя тип 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 ответ

Решение

Получается правильное свойство CodeInterface использовать это .Members (который по-прежнему является перечисляемым набором CodeElements)

Другие вопросы по тегам