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