Pregunta simple, supongo, pero he pasado una hora tratando de obtener una clase base para que mis controladores tengan unos servicios inyectados a través de la inyección de propiedad. Las propiedades tenían un ámbito protegido al principio, pero los objetos volvían a ser nulos, una vez que cambié el alcance a público funcionó. ¿Hay alguna forma de proteger las propiedades y hacer que el IoC funcione?¿Por qué Ninject no resuelve las propiedades protegidas en una clase base?
Aquí está mi configuración.
public class BaseController : Controller
{
[Inject]
protected LoggingInterface.ILogger<BaseController> Logger { set; get; }
[Inject]
protected IRepository Repository { set; get; }
protected override void OnAuthorization(AuthorizationContext filterContext)
{
....
base.OnAuthorization(filterContext);
}
}
y la bota strapper en el NinjectMVC3 App_Start
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(LoggingInterface.ILogger<>)).To(typeof(Log4NetLogger<>));
kernel.Bind<IRepository>().To<Repository>();
kernel.Bind<IUserService>().To<UserService>();
}
Gracias, Stephen
Gracias Darin, eso fue lo que concluí con solo jugar con él. La razón de peso de las propiedades es que los descendientes se vuelven locos con la inyección de ctor. Cuídate. –