IIocResolver.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System;
  2. namespace Abp.Dependency
  3. {
  4. /// <summary>
  5. /// Define interface for classes those are used to resolve dependencies.
  6. /// </summary>
  7. public interface IIocResolver
  8. {
  9. /// <summary>
  10. /// Gets an object from IOC container.
  11. /// Returning object must be Released (see <see cref="Release"/>) after usage.
  12. /// </summary>
  13. /// <typeparam name="T">Type of the object to get</typeparam>
  14. /// <returns>The object instance</returns>
  15. T Resolve<T>();
  16. /// <summary>
  17. /// Gets an object from IOC container.
  18. /// Returning object must be Released (see <see cref="Release"/>) after usage.
  19. /// </summary>
  20. /// <typeparam name="T">Type of the object to cast</typeparam>
  21. /// <param name="type">Type of the object to resolve</param>
  22. /// <returns>The object instance</returns>
  23. T Resolve<T>(Type type);
  24. /// <summary>
  25. /// Gets an object from IOC container.
  26. /// Returning object must be Released (see <see cref="Release"/>) after usage.
  27. /// </summary>
  28. /// <typeparam name="T">Type of the object to get</typeparam>
  29. /// <param name="argumentsAsAnonymousType">Constructor arguments</param>
  30. /// <returns>The object instance</returns>
  31. T Resolve<T>(object argumentsAsAnonymousType);
  32. /// <summary>
  33. /// Gets an object from IOC container.
  34. /// Returning object must be Released (see <see cref="Release"/>) after usage.
  35. /// </summary>
  36. /// <param name="type">Type of the object to get</param>
  37. /// <returns>The object instance</returns>
  38. object Resolve(Type type);
  39. /// <summary>
  40. /// Gets an object from IOC container.
  41. /// Returning object must be Released (see <see cref="Release"/>) after usage.
  42. /// </summary>
  43. /// <param name="type">Type of the object to get</param>
  44. /// <param name="argumentsAsAnonymousType">Constructor arguments</param>
  45. /// <returns>The object instance</returns>
  46. object Resolve(Type type, object argumentsAsAnonymousType);
  47. /// <summary>
  48. /// Gets all implementations for given type.
  49. /// Returning objects must be Released (see <see cref="Release"/>) after usage.
  50. /// </summary>
  51. /// <typeparam name="T">Type of the objects to resolve</typeparam>
  52. /// <returns>Object instances</returns>
  53. T[] ResolveAll<T>();
  54. /// <summary>
  55. /// Gets all implementations for given type.
  56. /// Returning objects must be Released (see <see cref="Release"/>) after usage.
  57. /// </summary>
  58. /// <typeparam name="T">Type of the objects to resolve</typeparam>
  59. /// <param name="argumentsAsAnonymousType">Constructor arguments</param>
  60. /// <returns>Object instances</returns>
  61. T[] ResolveAll<T>(object argumentsAsAnonymousType);
  62. /// <summary>
  63. /// Gets all implementations for given type.
  64. /// Returning objects must be Released (see <see cref="Release"/>) after usage.
  65. /// </summary>
  66. /// <param name="type">Type of the objects to resolve</param>
  67. /// <returns>Object instances</returns>
  68. object[] ResolveAll(Type type);
  69. /// <summary>
  70. /// Gets all implementations for given type.
  71. /// Returning objects must be Released (see <see cref="Release"/>) after usage.
  72. /// </summary>
  73. /// <param name="type">Type of the objects to resolve</param>
  74. /// <param name="argumentsAsAnonymousType">Constructor arguments</param>
  75. /// <returns>Object instances</returns>
  76. object[] ResolveAll(Type type, object argumentsAsAnonymousType);
  77. /// <summary>
  78. /// Releases a pre-resolved object. See Resolve methods.
  79. /// </summary>
  80. /// <param name="obj">Object to be released</param>
  81. void Release(object obj);
  82. /// <summary>
  83. /// Checks whether given type is registered before.
  84. /// </summary>
  85. /// <param name="type">Type to check</param>
  86. bool IsRegistered(Type type);
  87. /// <summary>
  88. /// Checks whether given type is registered before.
  89. /// </summary>
  90. /// <typeparam name="T">Type to check</typeparam>
  91. bool IsRegistered<T>();
  92. }
  93. }