/// <summary> /// Registrar un objeto en un contenedor IoC /// </summary> /// <typeparam name="TContract">Representa la implementacion del contrato</typeparam> /// <typeparam name="TImplementation">Representa the implementation of the contract</typeparam> /// <param name="name"></param> /// <param name="instance">Establecer una instancia de una aplicación ya creada</param> /// <param name="propertiesCondition"></param> /// <param name="instanceCondition">Share = Usa la misma instancia, NonShare = Crear una nueva instancia cada vez que</param> public void Register <TContract, TImplementation>(string name, TImplementation instance, PropertiesTypeCondition propertiesCondition, InstanceTypeCondition instanceCondition) { var typeFound = from t in Types where t.Key == typeof(TContract) && t.Implementation == typeof(TImplementation) select t; var typeRegisters = typeFound as TypeRegister[] ?? typeFound.ToArray(); if (!typeRegisters.Any()) { Types.Add(new TypeRegister { Key = typeof(TContract), Implementation = typeof(TImplementation), Name = name, Instance = instance, PropertiesCondition = propertiesCondition, InstanceCondition = instanceCondition }); } else { typeRegisters.First().Instance = instance; } }
private static bool ValidateInstance(TypeRegister typeRegistered, InstanceTypeCondition instanceTypeCondition) { return(typeRegistered.Instance == null && typeRegistered.InstanceCondition == instanceTypeCondition); }