IInjectModule.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. namespace IFramework.Inject
  4. {
  5. /// <summary>
  6. ///
  7. /// </summary>
  8. public interface IInjectModule
  9. {
  10. /// <summary>
  11. /// 清除
  12. /// </summary>
  13. void Clear();
  14. /// <summary>
  15. /// 反射注入
  16. /// </summary>
  17. /// <param name="obj"></param>
  18. void Inject(object obj);
  19. /// <summary>
  20. /// 注入所有
  21. /// </summary>
  22. void InjectInstances();
  23. /// <summary>
  24. /// 注册
  25. /// </summary>
  26. /// <typeparam name="Type"></typeparam>
  27. /// <param name="name"></param>
  28. void Subscribe<Type>(string name = null);
  29. /// <summary>
  30. /// 注册
  31. /// </summary>
  32. /// <typeparam name="BaseType"></typeparam>
  33. /// <typeparam name="Type"></typeparam>
  34. /// <param name="name"></param>
  35. void Subscribe<BaseType, Type>(string name = null) where Type : BaseType;
  36. /// <summary>
  37. /// 注册
  38. /// </summary>
  39. /// <param name="source"></param>
  40. /// <param name="target"></param>
  41. /// <param name="name"></param>
  42. void Subscribe(Type source, Type target, string name = null);
  43. /// <summary>
  44. /// 注册实例
  45. /// </summary>
  46. /// <typeparam name="Type"></typeparam>
  47. /// <param name="instance"></param>
  48. /// <param name="name"></param>
  49. /// <param name="inject"></param>
  50. void SubscribeInstance<Type>(Type instance, string name = null, bool inject = true) where Type : class;
  51. /// <summary>
  52. /// 注册实例
  53. /// </summary>
  54. /// <param name="baseType"></param>
  55. /// <param name="instance"></param>
  56. /// <param name="name"></param>
  57. /// <param name="inject"></param>
  58. /// <exception cref="Exception"></exception>
  59. void SubscribeInstance(Type baseType, object instance, string name = null, bool inject = true);
  60. /// <summary>
  61. /// 获取
  62. /// </summary>
  63. /// <typeparam name="T"></typeparam>
  64. /// <param name="name"></param>
  65. /// <param name="args"></param>
  66. /// <returns></returns>
  67. T GetValue<T>(string name = null, params object[] args) where T : class;
  68. /// <summary>
  69. /// 获取
  70. /// </summary>
  71. /// <param name="baseType"></param>
  72. /// <param name="name"></param>
  73. /// <param name="constructorArgs"></param>
  74. /// <returns></returns>
  75. object GetValue(Type baseType, string name = null, params object[] constructorArgs);
  76. /// <summary>
  77. /// 获取
  78. /// </summary>
  79. /// <param name="type"></param>
  80. /// <returns></returns>
  81. IEnumerable<object> GetValues(Type type);
  82. /// <summary>
  83. /// 获取
  84. /// </summary>
  85. /// <typeparam name="Type"></typeparam>
  86. /// <returns></returns>
  87. IEnumerable<Type> GetValues<Type>();
  88. }
  89. }