ObjectFactory.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. namespace Model
  3. {
  4. public static class ObjectFactory
  5. {
  6. public static T Create<T>() where T : Disposer
  7. {
  8. T disposer = (T)Activator.CreateInstance(typeof(T));
  9. ObjectEvents.Instance.Awake(disposer);
  10. return disposer;
  11. }
  12. public static T Create<T, A>(A a) where T : Disposer
  13. {
  14. T disposer = (T)Activator.CreateInstance(typeof(T));
  15. ObjectEvents.Instance.Awake(disposer, a);
  16. return disposer;
  17. }
  18. public static T Create<T, A, B>(A a, B b) where T : Disposer
  19. {
  20. T disposer = (T)Activator.CreateInstance(typeof(T));
  21. ObjectEvents.Instance.Awake(disposer, a, b);
  22. return disposer;
  23. }
  24. public static T Create<T, A, B, C>(A a, B b, C c) where T : Disposer
  25. {
  26. T disposer = (T)Activator.CreateInstance(typeof(T));
  27. ObjectEvents.Instance.Awake(disposer, a, b, c);
  28. return disposer;
  29. }
  30. public static T CreateWithId<T>(long id) where T : Disposer
  31. {
  32. T disposer = (T)Activator.CreateInstance(typeof(T), id);
  33. ObjectEvents.Instance.Awake(disposer);
  34. return disposer;
  35. }
  36. public static T CreateWithId<T, A>(long id, A a) where T : Disposer
  37. {
  38. T disposer = (T)Activator.CreateInstance(typeof(T), id);
  39. ObjectEvents.Instance.Awake(disposer, a);
  40. return disposer;
  41. }
  42. public static T CreateWithId<T, A, B>(long id, A a, B b) where T : Disposer
  43. {
  44. T disposer = (T)Activator.CreateInstance(typeof(T), id);
  45. ObjectEvents.Instance.Awake(disposer, a, b);
  46. return disposer;
  47. }
  48. public static T CreateWithId<T, A, B, C>(long id, A a, B b, C c) where T : Disposer
  49. {
  50. T disposer = (T)Activator.CreateInstance(typeof(T), id);
  51. ObjectEvents.Instance.Awake(disposer, a, b, c);
  52. return disposer;
  53. }
  54. }
  55. }