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