| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- using System;
- using Abp.Dependency;
- using Abp.Events.Bus.Handlers;
- namespace Abp.Events.Bus.Factories
- {
- /// <summary>
- /// This <see cref="IEventHandlerFactory"/> implementation is used to get/release
- /// handlers using Ioc.
- /// </summary>
- public class IocHandlerFactory : IEventHandlerFactory
- {
- /// <summary>
- /// Type of the handler.
- /// </summary>
- public Type HandlerType { get; }
- private readonly IIocResolver _iocResolver;
- /// <summary>
- /// Creates a new instance of <see cref="IocHandlerFactory"/> class.
- /// </summary>
- /// <param name="iocResolver"></param>
- /// <param name="handlerType">Type of the handler</param>
- public IocHandlerFactory(IIocResolver iocResolver, Type handlerType)
- {
- _iocResolver = iocResolver;
- HandlerType = handlerType;
- }
- /// <summary>
- /// Resolves handler object from Ioc container.
- /// </summary>
- /// <returns>Resolved handler object</returns>
- public IEventHandler GetHandler()
- {
- return (IEventHandler)_iocResolver.Resolve(HandlerType);
- }
- public Type GetHandlerType()
- {
- return HandlerType;
- }
- /// <summary>
- /// Releases handler object using Ioc container.
- /// </summary>
- /// <param name="handler">Handler to be released</param>
- public void ReleaseHandler(IEventHandler handler)
- {
- _iocResolver.Release(handler);
- }
- }
- }
|