ArcEngine中CoClass和Class的理解

來源:互聯網
上載者:User
ArcEngine中CoClass和Class的理解2008-03-17 10:27

       學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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.