學AE也有一段時間了,這幾天看了一下朱政的《ArcEngine的開發於部署》示範稿,裡面有提到CoClass和Class,感覺不太明白。然後就查閱了一些AE的OMD圖,個人感覺在OMD圖中比較難理解的就是可執行個體化類CLASS。因為這個在C#裡貌似沒有這個概念,而且網上的資料也非常稀少。 我做了以下例子對CoClass和Class做了個初步理解: ====================================== ArcEngine中 workSpace 就是一個可實執行個體化類 WorkSpace不能用new建立,但可以通過WorkSpaceFarctory.Openfromfile()方法來建立.如下: IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(ConnectionString, 0); 但當我們嘗試用New去建立一個Workspace類時,如下: IWorkspace pWorkspace = new WorkspaceClass(); 就會出現以下錯誤: “類型”ESRI.ArcGIS.Geodatabase.WorkspaceClass未定義建構函式; 所以,Class和CoClass的主要區別就是CoClass是帶建構函式的Class.以此它可以用New直接建立對象。 ======================================
以下為示範稿: 其中,Nest和Chicken 是彙總關係(Aggregation),既它們之間不共存。 Wings和Chicken是組合關係(Composition),它們共存,翅膀是雞的一部分,雞不在了翅膀也就沒了。 我們可以: iChicken pChicken //iChicken is an interface of Chicken ppChicken = new Chicken //建立Chicken對象
iEgg pEgg //iEgg is an interface of Egg
//通過"Chicken"對象的"iChicken"介面下的“layeggs()"方法建立“Egg”對象 pEgg =pChicken.layegg(); 基本的interface、method、coclass、class用法都在裡邊了 來自:http://hi.baidu.com/murphy1314/blog/item/401b0aa749910491d1435882.html |