Necesito conectar mi ModelBinder personalizado a mi contenedor DI en MVC 3, pero no puedo hacerlo funcionar.Ejemplo de implementación IModelBinderProvider para la inyección de constructor ModelBinder en MVC 3
So. Esto es lo que tengo: A ModelBinder con un servicio de constructor inyectado.
public class ProductModelBinder : IModelBinder{
public ProductModelBinder(IProductService productService){/*sets field*/}
// the rest don't matter. It works.
}
Mi ligante funciona bien si agrego así:
ModelBinders.Binders.Add(typeof(Product),
new ProductModelBinder(IoC.Resolve<IProductService>()));
pero esa es la vieja manera de hacerlo, y no quiero eso.
Lo que necesito es ayuda sobre cómo enganchar ese modelbinder al IDependencyResolver que he registrado.
De acuerdo con Brad Wilson, el secreto está usando una implementación de IModelBinderProvider, pero no está claro cómo conectarlo. (in this post)
¿Alguien tiene un ejemplo?
IModelBinderProvider sería su propia implementación. Da la casualidad de que escribí una publicación en el blog sobre este tema http://buildstarted.com/2010/12/02/modelbinderproviders-automatic-binding-your-models-is-easy-as-pie/ Espero que esto ayude – Buildstarted
Sí , eso está funcionando bien. Simplemente reemplazo el elemento CreateInstance() con var instance = (IModelBinder) DependencyResolver.Current.GetService (type); Gracias! . –
Todavía creo que debería ser posible hacer una implementación más limpia usando genéricos. Necesito dormir sobre eso, creo;) –