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