Ejemplo n.º 1
0
        public static Type ObtenerTypoDto(string tipoDto)
        {
            var cache = ServicioDeCaches.Obtener(nameof(ObtenerTypoDto));

            if (!cache.ContainsKey(tipoDto))
            {
                cache[tipoDto] = Ensamblados.ObtenerType("ModeloDeDto.dll", tipoDto);
            }

            return((Type)cache[tipoDto]);
        }
Ejemplo n.º 2
0
        public static IGestor CrearGestor(ContextoSe contexto, string dtm, string dto)
        {
            var cache = ServicioDeCaches.Obtener(nameof(CrearGestor));
            var clave = $"{dtm}-{dto}";

            if (!cache.ContainsKey(clave))
            {
                var assembly = Assembly.LoadFile($@"{Ensamblados.RutaDeBinarios()}\GestoresDeNegocio.dll");
                var clases   = assembly.GetExportedTypes();
                for (int i = 0; i < clases.Length; i++)
                {
                    var clase = clases[i];
                    if (clase.BaseType.Name.Contains(nameof(GestorDeElementos)) && clase.BaseType.GenericTypeArguments[1].Name == dtm && clase.BaseType.GenericTypeArguments[2].Name == dto)
                    {
                        var parametros = new Type[] { typeof(ContextoSe), typeof(IMapper) };

                        cache[clave] = clase.GetConstructor(new Type[] { typeof(ContextoSe), typeof(IMapper) });
                        if (cache[clave] == null)
                        {
                            throw new Exception($"No se ha definido el constructor Gestor para la clase {clase.Name} con los parámetros de contexto y mapeador.");
                        }

                        break;
                    }

                    if (clase.BaseType.Name.Contains("GestorDeRelaciones") && clase.BaseType.GenericTypeArguments[1].Name == dtm && clase.BaseType.GenericTypeArguments[2].Name == dto)
                    {
                        var parametros = new Type[] { typeof(ContextoSe), typeof(IMapper) };

                        cache[clave] = clase.GetConstructor(new Type[] { typeof(ContextoSe), typeof(IMapper) });
                        if (cache[clave] == null)
                        {
                            throw new Exception($"No se ha definido el constructor Gestor para la clase {clase.Name} con los parámetros de contexto y mapeador.");
                        }

                        break;
                    }
                }
            }

            if (!cache.ContainsKey(clave))
            {
                throw new Exception($"No se ha localizado un gestor de elementods para los tipos {dtm}, {dto}.");
            }

            return((IGestor)((ConstructorInfo)cache[clave]).Invoke(new object[] { contexto, contexto.Mapeador }));
        }
        public static MethodInfo ValidarExisteTrabajoSometido(TrabajoSometidoDtm registro)
        {
            var rutaBinarios = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);

            return(Ensamblados.ValidarMetodoEstatico($"{rutaBinarios}\\{registro.Dll}.dll", registro.Clase, registro.Metodo));
        }