public override void OnExit(MethodExecutionArgs args) { MethodInfo methodInfo = args.Method as MethodInfo; if (Tipo == null) { Tipo = methodInfo.ReturnType; } IObjeto objeto = ObjetoFactory.ObtenerObjeto(); if (objeto.esColeccion(Tipo)) { Tipo = Type.GetType(objeto.TipoSingular(Tipo)); EsColeccion = true; } object instancia = null; if (Ensamblado != null) { if (EsColeccion) { instancia = DynamicLoaderManager.ObtenerInstancias(Tipo, Ensamblado); } else { instancia = DynamicLoaderManager.ObtenerInstancia(Tipo, Ensamblado); } } if (instancia == null) { if (Dominio != null) { if (EsColeccion) { instancia = DynamicLoaderManager.ObtenerInstancias(Tipo, Dominio); } else { instancia = DynamicLoaderManager.ObtenerInstancia(Tipo, Dominio); } } } if (instancia == null) { if (EsColeccion) { instancia = DynamicLoaderManager.ObtenerInstancias(Tipo); } else { instancia = DynamicLoaderManager.ObtenerInstancia(Tipo); } } if (instancia != null) { args.ReturnValue = Convert.ChangeType(instancia, methodInfo.ReturnType); } else { args.ReturnValue = Activator.CreateInstance(methodInfo.ReturnType); } }