文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C# 中Employee对象的作用是什么

2023-06-17 22:48

关注

这篇文章给大家介绍C# 中Employee对象的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

C# Employee对象

命令的名字是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. }  

关于C# 中Employee对象的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯