Configurar DependancyResolver en MVC3 usando StructureMap para ModelMetadataProvider y ModelValidatorProvider

¿Es incluso posible configurar MVC3 para usar DependencyResolver para obtener un ModelMetadataProvider o ModelValidatorProvider personalizado? Porque en este punto no puedo hacer que funcione a través de DependencyResolver. Si lo configuro explícitamente a través del código en global.asax, funciona perfectamente, pero IoC simplemente ignora mi código. Estoy usando el paquete StructureMap de NuGet, así que no es nada lujoso.

Mis conexiones actuales a través de global.asax Global.asax.cs

ModelMetadataProviders.Current = new RedSandMetadataProvider(ModelMetadataProviders.Current);

ModelValidatorProviders.Providers.Add(new RedSandValidatorProvider((IUnitOfWork)DependencyResolver.Current.GetService(typeof (IUnitOfWork))));

Estos funcionan perfectamente. Tengo que pasar el ModelMetaDataProvider actual como constructor a mi personalizado porque solo puede tener un ModelMetaDataProvider conectado a la vez. Así que manejo las llamadas que necesito inspeccionando los parámetros del método y dejo que el resto caiga en la implementación base.

My ModelValidatorProviders utiliza un objeto IUnitOfWork que tiene una propiedad Session rellenada por nHibernate. Hago esto porque necesito determinar qué reglas de validación se definen en la base de datos en función de la propiedad que se valida.

De nuevo, ambos funcionan. Pero cada vez que intento configurarlos utilizando StructureMap para que estén disponibles para DependencyResolver, no puedo obtener el resultado deseado. ¿Alguien más ha hecho esto antes y ha conseguido que funcione realmente? ¿Hay algo elegante que deba hacer debido a los parámetros de los constructores? ¿Existe un ciclo de vida específico que debe establecerse en el registro de StructureMap de estos tipos? He miradoen todos lado para obtener ejemplos de esto, pero todos se refieren a versiones beta o lanzan candidatos de MVC3 que no se aplican a la versión final, o son artículos que dicen que es posible pero en realidad no lo demuestran con un ejempl

REALMENTE agradecería la ayuda de alguien con esto porque me estoy sacando el pelo por lo simple que debería ser, que todos los recursos en la red DICEN que es posible, pero no puedo replicar ninguno de sus reclamos. @

Actualiza

Estaba usando StructureMap.MVC3 1.0.5, acabo de actualizar a 1.0.6 después de notar que había una actualización, sin embargo, ¿no parece haber mucha diferencia entre las versiones?

My StructureMap Setup

public static IContainer Initialize() {
    ObjectFactory.Initialize(x =>
                {
                    x.Scan(scan =>
                        {
                                //scan.AssembliesFromApplicationBaseDirectory(); //Would this let us setup dependancy injection to dynamically load plugins?
                                scan.TheCallingAssembly();
                                scan.WithDefaultConventions();
                                scan.LookForRegistries();
                            });
                    //x.For<IExample>().Use<Example>();

                    //x.For<ITempDataProvider>().Use( new CookieTempDataProvider(HttpContext.Current.Request.RequestContext.HttpContext));
                    //x.For<ModelMetadataProvider>().Singleton().Use(new RedSandMetadataProvider(ModelMetadataProviders.Current));
                    //x.For<ModelValidatorProvider>().Use<RedSandValidatorProvider>();
                });
    return ObjectFactory.Container;
}

He dejado que el Resolver dependencias se establezca mediante el método Start () agregado por el paquete usando WebActivator.

Puede ver las líneas que estaba tratando de usar para registrar mis metadatos y los proveedores de validadores comentaron. No sé si la forma en que lo hacía era correcta o no. Agregué la llamada para buscar registros porque tengo un Registro para configurar y agregar nhibernate al contenedor de structuremap.

Respuestas a la pregunta(1)

Su respuesta a la pregunta