Modelowanie projektu
Następnym krokiem w dostarczaniu automatyzacji projektu jest zaimplementowanie standardowych obiektów projektu: Projects kolekcji i, Project
obiektów i ProjectItems
ProjectItem oraz pozostałych obiektów unikatowych dla implementacji. Te standardowe obiekty są definiowane w pliku Dteinternal.h. Implementacja obiektów standardowych jest dostępna w przykładzie BscPrj. Możesz użyć tych klas jako modeli, aby utworzyć własne standardowe obiekty projektu, które stoją obok siebie z obiektami projektu z innych typów projektów.
Użytkownik automatyzacji zakłada, że może wywołać metodę Solution("<UniqueProjName>")
i ProjectItems (n
), gdzie n jest numerem indeksu w celu uzyskania określonego projektu w rozwiązaniu. Wykonanie tego wywołania automatyzacji powoduje, GetProperty że środowisko wywołuje odpowiednią hierarchię projektu, przekazując VSITEMID_ROOT jako parametr ItemID i VSHPROPID_ExtObject jako parametr VSHPROPID. IVsHierarchy::GetProperty
IDispatch
Zwraca wskaźnik do obiektu automatyzacji dostarczającego interfejs podstawowyProject
, który został zaimplementowany.
Poniżej znajduje się składnia .IVsHierarchy::GetProperty
HRESULT GetProperty (
VSITEMID
itemid
,
VSHPROPID
propid
,
VARIANT
*pvar
);
Projekty umożliwiają zagnieżdżanie kolekcji i używanie ich do tworzenia grup elementów projektu. Hierarchia wygląda następująco.
Projects
|- Project
|- ProjectItems (a collection of ProjectItem)
|- ProjectItem (single object) or ProjectItems (another collection)
Zagnieżdżanie oznacza, że obiekt może być ProjectItems jednocześnie kolekcjąProjectItem, ponieważ ProjectItems
kolekcja może zawierać zagnieżdżone obiekty. Przykładowy projekt podstawowy nie demonstruje tego zagnieżdżania. Project
Implementując obiekt, uczestniczysz w strukturze podobnej do drzewa, która charakteryzuje projekt ogólnego modelu automatyzacji.
Automatyzacja projektu jest zgodna ze ścieżką na poniższym diagramie.
Automatyzacja projektu
Jeśli obiekt nie zostanie zaimplementowany Project
, środowisko nadal zwróci obiekt ogólny Project
zawierający tylko nazwę projektu.