C# CreateEmployee()函數(shù)
C#語言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C# CreateEmployee()函數(shù),包括介紹使用ResultBuffer來創(chuàng)建一個(gè)新的XRecord,ResultBuffer等方面。
我們已經(jīng)定義了公司字典,現(xiàn)在我們要把每個(gè)雇員的數(shù)據(jù)加入到前一章定義的塊索引中。我們要加入的數(shù)據(jù)是:名字、薪水和雇員所屬的部門。要加入這些數(shù)據(jù),我們要同前幾個(gè)步驟一樣使用擴(kuò)展記錄。因?yàn)槲覀円尤肴齻€(gè)條目,所以我們要使擴(kuò)展記錄可以把這些數(shù)據(jù)聯(lián)系在一起。
一般來說,擴(kuò)展記錄只能存在于字典中。而我們要為每個(gè)雇員加入這些數(shù)據(jù)(就是本章開頭所講的“每個(gè)圖形”的自定義數(shù)據(jù)和“每個(gè)實(shí)體”的自定義數(shù)據(jù)),那應(yīng)該怎么做呢?答案就是:每一個(gè)對(duì)象或AutoCAD中的實(shí)體實(shí)際上都有一個(gè)名為’擴(kuò)展字典(Extension Dictionary)’的可選字典。我們可以把擴(kuò)展記錄直接加入到這個(gè)字典中。
請(qǐng)回到我們?cè)谏弦徽聞?chuàng)建的C# CreateEmployee()函數(shù)。這個(gè)函數(shù)是我們創(chuàng)建塊索引的地方。
讓我們像前面的步驟一樣來創(chuàng)建一個(gè)新的擴(kuò)展記錄。因?yàn)槲覀円尤?個(gè)條目,因此我們既可以使用ResultBuffer的Add方法(它會(huì)在擴(kuò)展記錄鏈中加入一個(gè)鏈接),也可以利用ResultBuffer的構(gòu)造函數(shù)(它的一種構(gòu)造函數(shù)可以輸入可變數(shù)量的參數(shù))。
無論用哪一種方法,請(qǐng)?jiān)贑# CreateEmployee()函數(shù)中使用ResultBuffer來創(chuàng)建一個(gè)新的XRecord,ResultBuffer包括以下的類型和值:
◆Text – “Earnest Shackleton” (或是你選擇的其它雇員的名字)
◆Real – 72000 或者更多的薪水J
◆Text – “Sales” 雇員所在的部門
要把上面的擴(kuò)展記錄加入到塊索引,我們必須把它加入到擴(kuò)展字典。通常這個(gè)字典是不存在的,除非它被明確地創(chuàng)建,塊索引就是這種情況。要給一個(gè)對(duì)象創(chuàng)建擴(kuò)展字典,你要調(diào)用它的成員‘CreateExtensionDictionary()’。這個(gè)函數(shù)不返回任何值,所以要訪問它創(chuàng)建的擴(kuò)展字典,你還得使用對(duì)象的‘ExtensionDictionary’屬性。你可以使用類似于以下的代碼來創(chuàng)建并訪問擴(kuò)展字典:
- br.CreateExtensionDictionary();
- DBDictionary brExtDict = (DBDictionary)trans.GetObject
(br.ExtensionDictionary, OpenMode.ForWrite, false);
由于擴(kuò)展字典也是字典,我們可以和第3步一樣在擴(kuò)展字典中加入擴(kuò)展記錄。請(qǐng)完成有關(guān)的代碼來創(chuàng)建和訪問塊索引的擴(kuò)展字典,加入你在第4步中創(chuàng)建的擴(kuò)展記錄,然后把擴(kuò)展記錄加入到事務(wù)處理。
返回到NOD……因?yàn)樵贜OD中創(chuàng)建公司字典只需要一次(就像創(chuàng)建Employee塊一樣),因此我們應(yīng)該把CreateDivision函數(shù)的命令屬性去掉,而在CreateEmployeeDefinition()中調(diào)用這個(gè)函數(shù)。請(qǐng)自己完成這些改變。當(dāng)所有這些都做完后,當(dāng)CREATE命令第一次運(yùn)行的時(shí)候,所有的函數(shù)都會(huì)被調(diào)用。
【編輯推薦】