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]); }
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)); }