Udostępnij za pośrednictwem


Przegląd obiektów CodeModel dla aplikacji Visual Basic i C#

Może zajść potrzeba zbadania programowo struktury kodu w Visual Basic lub Visual C# aplikacji.Prawdopodobnie chcesz wiedzieć, obszary nazw zdefiniowane w aplikacji i ich relacji zagnieżdżenia.Może też utworzyć dokument, który zawiera listę klas i członków ich publicznego jako podstawa dla dokumentacji.

CodeModel2 Obiekt jest obiektem ogólne rozszerzalności, który zapewnia dostęp do kodu w aplikacji.CodeModel2 Obiektu nie dostarcza tekstowe wykazu kodu.Zamiast tego zawiera zagnieżdżone kolekcja obiektów, która reprezentuje elementów kodu.Na przykład, każdy obszar nazw w kodzie jest reprezentowane przez CodeNamespace obiektu.CodeModel2 Obiektu skojarzonego z projektem jest dostępny przez CodeModel właściwości.

FileCodeModel2 Obiekt jest obiektem ogólne rozszerzalności, który zapewnia dostęp do kodu w jednym pliku źródłowym.Każdy plik źródłowy w aplikacji jest reprezentowana przez ProjectItem obiektu oraz FileCodeModel2 skojarzone z elementem projektu obiekt znajduje się w FileCodeModel właściwości.

Obie CodeModel2 i FileCodeModel2 obiekty dostarczają CodeModel2.CodeElements i FileCodeModel.CodeElements właściwość, odpowiednio, który jest kolekcją CodeElement2 obiektów.Visual Basici Visual C# obsługuje CodeModel2 i FileCodeModel obiektów na nieco różne sposoby.Na przykład Visual Basic wdrażania, zobacz Odnajdowanie kodu za pomocą modelu kodu (Visual Basic) i Porady: użycie obiektu CodeModel do analizowania kodu Visual Basic.Na przykład Visual C# wdrażania, zobacz Odnajdowanie kodu za pomocą modelu kodu (Visual C#) i Porady: tworzenie klasy C# przy użyciu obiektu CodeModel.

W przypadku niektórych języków należy implementować cały Visual Studio kod modelu.Tematy pomocy punkt poza wyjątkami, gdy takie istnieją.Większość różnice między implementacjami modelu kodu są ze względu na różnice funkcjonalne między językami.Na przykład, nie można dodać funkcje CodeNamespace obiektów w Visual Basic lub Visual C# ponieważ tylko Visual C++ funkcje definicje funkcji najwyższego poziomu.

Obiekty modelu głównego kodu są wymienione w poniższej tabeli.Kliknij łącza, aby zobaczyć listę metod i właściwości dla każdego obiektu.

Typ

Opis

CodeNamespace

Reprezentuje konstrukcji obszaru nazw w pliku źródłowym.

CodeStruct2

Reprezentuje struktury w kodzie źródłowym.

CodeInterface2

Reprezentuje interfejs w kodzie źródłowym.

CodeClass2

Reprezentuje klasę w kodzie źródłowym.

CodeEnum

Reprezentuje wyliczenie w kodzie źródłowym.

CodeVariable2

Definiuje konstruktorem zmiennej w pliku źródłowym.

CodeDelegate2

Reprezentuje delegata w kodzie źródłowym.

CodeElement2

Reprezentuje element kodu lub konstrukcji w pliku źródłowym.

CodeEvent

Modele element zdarzenia kodu.

CodeProperty2

Definiuje właściwości konstrukcji w pliku źródłowym.

CodeAttribute2

Określa atrybut dla elementu kodu.

CodeImport

Modele użycie instrukcji, które Importowanie obszarów nazw.

CodeFunction2

Reprezentuje konstrukcja funkcji w pliku źródłowym.

CodeParameter2

Definiuje parametr do funkcji, właściwości i tak dalej.

Zagnieżdżone elementy kodu

Elementy kodu w aplikacji są zorganizowane w zagnieżdżone architektury.Na przykład FileCodeModel2 projektu element może zawierać, w jego CodeElements kolekcji, element kodu dla obszaru nazw.CodeNamespace Obiekt reprezentujący tego obszaru nazw może zawierać kilka innych elementów kodu tej klasy reprezentujące w jego Members właściwości.Każdy CodeClass2 element, z kolei może zawierać elementów kodu reprezentującego właściwości (CodeProperty2 obiektu) i metody (CodeFunction2 obiektu).Metody pobierania zagnieżdżony kod elementy zależne od typu elementu kodu i są opisane w następnej sekcji.

Kod elementu kategorii

CodeElement2 Klasa jest klasą bazową, która reprezentuje wszystkie elementy kodu w elemencie projektu (plik źródłowy).Wiele klas pochodzić od CodeElement2 do reprezentowania konstrukcje w aplikacji, w tym obszarów nazw, klas, właściwości, metod i zdarzeń.Istnieją dwie kategorie wyraziste elementów kodu — tych, które reprezentują typy i tych, które nie.

Niektóre elementy kodu w aplikacji reprezentują typy.Te elementy kodu pochodzi od CodeType obiektu jak również CodeElement2 obiekt:

Można stwierdzić, czy odwołanie do CodeElement2 obiekt jest jednym z tych typów za pomocą IsCodeType właściwości.Aby znaleźć elementy zagnieżdżone kodu z tych typów, należy użyć Members właściwość, która zwraca CodeElements kolekcji.Porady: użycie obiektu CodeModel do analizowania kodu Visual Basiczawiera przykład wyszukuje wszystkie klasy w projekcie.

Jak znaleźć elementów kodu zagnieżdżone pod inne typy elementów kodu, zależy od typu element zagnieżdżony kod.Na przykład ponieważ właściwość ma tylko Get i Set metody, CodeProperty2 ma obiektu skojarzonego z właściwością Getter i Setter właściwości, które zwracają CodeFunction2 elementy.Na poniższej liście przedstawiono właściwości, które należy użyć, aby znaleźć elementy kod zagnieżdżony kod typy elementów.

Typ

Właściwość

CodeFunction

Parameters

CodeNamespace

Members

CodeProperty

GetteriSetter

Elementy kodu z odwołań zewnętrznych

Kod może zawierać deklaracje typu od typów zdefiniowanych w odwołania projektu.(Odwołania projektu są dodawane za pomocą Dodać odwołania okno dialogowe lub z References.Add metoda rozszerzalności.) Visual Basic Projekt systemu nie rozwiąże CodeTypeRef2 obiektów reprezentujących te odwołania poza ich nazwy.W związku z tym jeśli próbuje się użyć dowolne inne właściwości lub metody CodeElement2 obiektu skojarzonej z odwołaniem, inne niż Name właściwość, zostanie zgłoszony wyjątek "Nie zaimplementowane".Odniesienia te są określane jako "tylko nazwa typu" elementy kodu.CodeTypeobiekty reprezentujące odwołań zewnętrznych mają InfoLocation właściwość wartość vsCMInfoLocationNone.

Błędy kompilatora i obiekt CodeModel

Podczas pisania kodu, który zachowuje odwołaniami do CodeElement2 obiektów, należy pamiętać, że kodem źródłowym można zmienić, podczas gdy trzymają odniesienia.Element kodu może usunięty, zmieniono jego nazwę lub zaangażowane w błąd kompilatora.Gdy tak się stanie, wzywa do CodeElement2 obiektu zwraca komunikat o błędzie "wyjątek od HRESULT: 0x80047E2C."

Zobacz też

Zadania

Porady: użycie obiektu CodeModel do analizowania kodu Visual Basic

Rozwiązywanie problemów z rozszerzalnością Visual Basic i Visual C#

Koncepcje

Odnajdowanie kodu za pomocą modelu kodu (Visual Basic)

Odnajdowanie kodu za pomocą modelu kodu (Visual C#)