tengo el siguiente código en mi Global.aspxinyección Propiedad en Controlador Base utilizando Ninject 2
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new ServiceModule());
}
también tengo la siguiente Ninject Módulo:
internal class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IProductService>().To<ProductService>().InRequestScope();
}
}
también tengo una base:
public class BaseController : Controller
{
[Inject]
public IProductService ProductService
{
get;
set;
}
}
Este código funciona. El problema que tengo es que me gustaría eliminar el atributo de inyección del controlador base y especificarlo en el Ninject ServiceModule. En otras palabras, ¿cómo voy a escribir una regla vinculante en el ServiceModule que le dice a Ninject que inyecte ProductService en la propiedad en el controlador base?
Si elimino el atributo obtendré una NullReferenceException.
Ruben, ¿me puede dar un ejemplo de cómo escribiría una regla vinculante en el ServiceModule que le dice a Ninject que inyecte ProductService en la propiedad en el controlador base? ¡Gracias! – Thomas
@Thomas: Nunca he hecho una personalización de esa naturaleza (y como no creo que sea un buen enfoque no deseo), desafortunadamente no podré hacer el tiempo para hacerlo, lo siento ... (Y como mi respuesta parece haber sido juzgada como sin valor hasta ahora, ¿por qué habría de hacerlo? ¿No es que tengo algún comentario de que mi respuesta se ha entendido o es correcta?) –