Digamos que tengo una entidad de usuario y me gustaría establecer su propiedad CreationTime en el constructor en DateTime.Now. Pero ser una entidad que adopta prueba de la unidad no quiero acceder a la DateTime.Now directamente, sino utilizar un ITimeProvider:¿Cómo usar un contenedor DI/IoC con el archivador modelo en ASP.NET MVC 2+?
public class User {
public User(ITimeProvider timeProvider) {
// ...
this.CreationTime = timeProvider.Now;
}
// .....
}
public interface ITimeProvider {
public DateTime Now { get; }
}
public class TimeProvider : ITimeProvider {
public DateTime Now { get { return DateTime.Now; } }
}
estoy usando ninject 2 en mi aplicación ASP.NET MVC 2.0. Tengo un UserController y dos métodos Create (uno para GET y otro para POST). El de GET es directo, pero el de POST no es tan directo y no es tan avanzado: P porque tengo que meterme con el encuadernador de modelos para decirle que obtenga una referencia de una implementación de ITimeProvider para poder construir una instancia de usuario.
public class UserController : Controller {
[HttpGet]
public ViewResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(User user) {
// ...
}
}
También me gustaría poder mantener todas las características del encuadernador de modelo predeterminado.
¿Alguna posibilidad de resolver esto simple/elegante/etc.? : D
relacionado: Tema específico de Ninject http://stackoverflow.com/questions/9186560/ninject-inject-a-dependency-into-a-custom-model-binder-and-using-inresquestscope –