C#Employee对象浅谈

C#语言有很多值得学习的地方,这里我们主要介绍C# Employee对象,包括介绍所有雇员数据的命令等方面。

C# Employee对象

本文用代码片断演示了怎样获取C# Employee对象的所有内容,包括ACME_DIVISION字典中的部门经理的名字。如果有时间的话,请阅读一下其中的代码来看看它是怎么使用的。它可以被直接放到你的类中并可以运行。命令的名字是PRINTOUTEMPLOYEE。ListEmployee()函数接收一个ObjectId参数,它通过一个ref类型的字符串数组返回值(包含相应的雇员数据)。调用它的PrintoutEmployee()函数只是用来在命令行中输出这些数据。

我们需要一个遍历并显示所有雇员数据的命令。

 
 
 
  1. public static void ListEmployee(ObjectId employeeId, ref string[] saEmployeeList)  
  2. {  
  3. int nEmployeeDataCount = 0;  
  4. Database db = HostApplicationServices.WorkingDatabase;  
  5. Transaction trans = db.TransactionManager.StartTransaction(); //开始事务处理。  
  6. try  
  7. {  
  8. Entity ent = (Entity)trans.GetObject(employeeId, OpenMode.ForRead, false); 
  9. //打开当前对象!  
  10. if (ent.GetType() == typeof(BlockReference))  
  11. {  
  12. //不是所有的块索引都有雇员数据,所以我们要处理错误  
  13. bool bHasOurDict = true;  
  14. Xrecord EmployeeXRec = null;  
  15. try{  
  16. BlockReference br = (BlockReference)ent;  
  17. DBDictionary extDict = (DBDictionary)trans.GetObject
    (br.ExtensionDictionary, OpenMode.ForRead, false);  
  18. EmployeeXRec = (Xrecord)trans.GetObject(extDict.GetAt("EmployeeData"), 
    OpenMode.ForRead, false);  
  19. }  
  20. catch  
  21. {  
  22. bHasOurDict = false; //出现了错误……字典或扩展记录不能访问  
  23. }  
  24. if (bHasOurDict) //如果获得扩展字典,而又有扩展记录……  
  25. {  
  26. // 为雇员列表分配内存  
  27. saEmployeeList = new String[4];  
  28. //加入雇员的名字  
  29. TypedValue resBuf = EmployeeXRec.Data.AsArray()[0];  
  30. saEmployeeList.SetValue(string.Format("{0}\n", resBuf.Value), 
    nEmployeeDataCount);  
  31. nEmployeeDataCount += 1;  
  32. //加入雇员的薪水  
  33. resBuf = EmployeeXRec.Data.AsArray()[1];  
  34. saEmployeeList.SetValue(string.Format("{0}\n", resBuf.Value), 
    nEmployeeDataCount);  
  35. nEmployeeDataCount += 1;  
  36. //加入雇员所在的部门  
  37. resBuf = EmployeeXRec.Data.AsArray()[2];  
  38. string str = (string)resBuf.Value;  
  39. saEmployeeList.SetValue(string.Format("{0}\n", resBuf.Value), 
    nEmployeeDataCount);  
  40. nEmployeeDataCount += 1;  
  41. //现在,让我们从公司字典中获取老板的名字  
  42. //在NOD中找到.  
  43. DBDictionary NOD = (DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, 
    OpenMode.ForRead, false);  
  44. DBDictionary acmeDict = (DBDictionary)trans.GetObject(NOD.GetAt("ACME_DIVISION"), 
    OpenMode.ForRead);  
  45. //注意我们直接使用扩展数据...  
  46. DBDictionary salesDict = (DBDictionary)trans.GetObject(acmeDict.GetAt
    ((string)EmployeeXRec.Data.AsArray()[2].Value),OpenMode.ForRead);  
  47. Xrecord salesXRec = (Xrecord)trans.GetObject(salesDict.GetAt("Department Manager"), 
    OpenMode.ForRead);  
  48. //***,把雇员的数据输出到命令行  
  49. resBuf = salesXRec.Data.AsArray()[0];  
  50. saEmployeeList.SetValue(string.Format("{0}\n", resBuf.Value), nEmployeeDataCount);  
  51. nEmployeeDataCount += 1;  
  52. }  
  53. }  
  54. trans.Commit();  
  55. }  
  56. finally  
  57. {  
  58. trans.Dispose();  
  59. }  
  60. }  
  61.  
  62. [CommandMethod("PRINTOUTEMPLOYEE")]  
  63. public static void PrintoutEmployee()  
  64. {  
  65. Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;  
  66. //声明我们将在下面使用的工具...  
  67. Database db = HostApplicationServices.WorkingDatabase;  
  68. Transaction trans = db.TransactionManager.StartTransaction();  
  69. try  
  70. {  
  71. //首先,获取块表和模型空间块表记录  
  72. BlockTable bt = (BlockTable)trans.GetObject(HostApplicationServices.
    WorkingDatabase.BlockTableId, OpenMode.ForRead);  
  73. BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], 
    OpenMode.ForRead);  
  74. //现在,我们需要把内容输出到命令行。这里可以有一个对象帮助我们:  
  75. //下面的部分,我们将遍历模型空间:  
  76. foreach (ObjectId id in btr)  
  77. {  
  78. Entity ent = (Entity)trans.GetObject(id, OpenMode.ForRead, false); //打开当前对象!  
  79. if (ent is BlockReference)  
  80. {  
  81. string[] saEmployeeList = null;// 这是正确的...定义新的列表。  
  82. ListEmployee(id, ref saEmployeeList);  
  83. if ((saEmployeeList.Length == 4))  
  84. {  
  85. ed.WriteMessage("Employee Name: {0}", saEmployeeList[0]);  
  86. ed.WriteMessage("Employee Salary: {0}", saEmployeeList[1]);  
  87. ed.WriteMessage("Employee Division: {0}", saEmployeeList[2]);  
  88. ed.WriteMessage("Division Manager: {0}", saEmployeeList[3]);  
  89. }  
  90. }  
  91. }  
  92. }  
  93. finally  
  94. {  
  95. }  

【编辑推荐】

  1. C#创建快捷方式简单描述
  2. C#压缩Access数据库详细介绍
  3. C#实现加载动态库概述
  4. C#日期型数据简单剖析
  5. C#装箱和拆箱简单描述

网站栏目:C#Employee对象浅谈
浏览路径:http://www.csdahua.cn/qtweb/news42/376942.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网