EntityDataManager.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace WebAPIBase.NetCore.BusinessCore
  8. {
  9. public sealed class EntityDataManager
  10. {
  11. private static Hashtable m_entitys = new Hashtable();
  12. private EntityDataManager()
  13. {
  14. }
  15. public static EntityData GetEmptyEntity(string className)
  16. {
  17. if (m_entitys.Contains(className))
  18. {
  19. return ((EntityData)m_entitys[className]).CloneData();
  20. }
  21. try
  22. {
  23. string classBuilderName = ClassBuilderManager.GetClassBuilderName(className);
  24. IClassBuilder classBuilder = ClassBuilderFactory.GetClassBuilder(classBuilderName);
  25. EntityData entityData = classBuilder.BuildClass(className);
  26. lock (m_entitys)
  27. {
  28. if (!m_entitys.Contains(className))
  29. {
  30. m_entitys.Add(className, entityData);
  31. }
  32. }
  33. return entityData.CloneData();
  34. }
  35. catch (Exception ex)
  36. {
  37. throw ex;
  38. }
  39. }
  40. public static void CloneEntityStruct(EntityData entity, string className)
  41. {
  42. try
  43. {
  44. EntityData entityData = null;
  45. if (m_entitys.Contains(className))
  46. {
  47. entityData = (EntityData)m_entitys[className];
  48. }
  49. else
  50. {
  51. string classBuilderName = ClassBuilderManager.GetClassBuilderName(className);
  52. IClassBuilder classBuilder = ClassBuilderFactory.GetClassBuilder(classBuilderName);
  53. entityData = classBuilder.BuildClass(className);
  54. lock (m_entitys)
  55. {
  56. if (!m_entitys.Contains(className))
  57. {
  58. m_entitys.Add(className, entityData);
  59. }
  60. }
  61. }
  62. entityData.CloneDataStucture(entity);
  63. }
  64. catch (Exception ex)
  65. {
  66. throw ex;
  67. }
  68. }
  69. }
  70. }