Как получить информацию о базовом элементе? . Дети бросают 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
)