Hoga Core IoC 1.0.0

Hoga.Core.IoC:1.0.0

En la versión 1.0.0 tiene las siguientes características:

  • Registro de componentes de manera modular

  • Tres tipos de ciclo de vida de los objetos Transient, Scope, Singleton

  • Registro de dependencias por medio de delegados

  • Compatibilidad con asp.net, asp.net core, blazor

  • Activador de controladores

El contrato del contenedor de dependencias el siguiente

public interface IContainer : IDisposable
{
        List<Type> GetAllTypesClass();

        object Resolve(Type type, string name = null);

        T Resolve<T>(string name = null);
        IEnumerable<T> ResolveAll<T>();

        IEnumerable<object> ResolveAllType(Type type);

        ScopeResolver ScopeResolver();
        void RegisterSingleton<T>();

        void RegisterSingleton<TFrom, TTo>(string name = null) where TTo : TFrom;

        void RegisterSingleton<TFrom>(Func<TFrom> function, string name = null);

        void RegisterSingleton<TFrom>(Func<IContainer, TFrom> function, string name = null);

        void RegisterSingleton(Type typeFrom, Type typeTo, string name = null);

        void RegisterSingleton(Type typeFrom, object obj, string name = null);

        void RegisterSingleton<T>(T obj, string name = null);

        void RegisterTransient<T>(string name = null);

        void RegisterTransient(Type typeFrom, Type typeTo, string name = null);

        void RegisterTransient<TFrom, TTo>(string name = null) where TTo : TFrom;

        void RegisterTransient<TFrom>(Func<TFrom> function, string name = null);

        void RegisterTransient<TFrom>(Func<IContainer, TFrom> function, string name = null);

        void RegisterScoped<T>(string name = null);

        void RegisterScoped(Type typeFrom, Type typeTo, string name = null);

        void RegisterScoped<TFrom, TTo>(string name = null) where TTo : TFrom;

        void RegisterScoped<TFrom>(Func<TFrom> function, string name = null);

        void RegisterScoped<TFrom>(Func<IContainer, TFrom> function, string name = null);

        void Register(LifetimeType registerType, Type from, Type to, Func<IContainer, object> func = null, string instanceName = null, object obj = null);

        void RegisterModule(IModuleIoC module);

        void RegisterModules(IModuleIoC[] modules);

        void RegisterConcept(Type conceptType, Assembly assembly = null);

        void RegisterConceptAttribute(Type attributeType, Assembly assembly = null);

        void RegisterAbstraction(Assembly assemblyContract);

        void RegisterConfigurationClass<T>();

        void RegisterConfigurationClass(Type configurationType);

        void RegisterFirtsImplementation<T>(LifetimeType? registerType = LifetimeType.Transient);

        void RegisterFirtsImplementation(Type type, LifetimeType? registerType = LifetimeType.Transient);

        bool ContainsDependency<T>(string name = null);

        bool ContainsDependency(Type type, string name = null);
}

Última actualización