Giả sử tôi có một thực thể User và tôi muốn thiết lập thuộc tính CreationTime của nó trong constructor thành DateTime.Now. Nhưng là người dùng thử nghiệm đơn vị tôi không muốn truy cập DateTime.Now trực tiếp nhưng sử dụng ITimeProvider:Làm thế nào để sử dụng một container DI/IoC với chất kết dính mô hình trong 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; } }
}
Tôi đang sử dụng NInject 2 trong ứng dụng ASP.NET MVC 2.0 của mình. Tôi có một UserController và hai phương thức Create (một cho GET và một cho POST). Một cho GET là thẳng về phía trước nhưng một cho POST là không thẳng và không phải như vậy về phía trước: P bởi vì tôi cần phải mess với các chất kết dính mô hình để nói với nó để có được một tham chiếu của một thực hiện ITimeProvider để có thể xây dựng một cá thể người dùng.
public class UserController : Controller {
[HttpGet]
public ViewResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(User user) {
// ...
}
}
Tôi cũng muốn có thể giữ tất cả các tính năng của trình kết nối mô hình mặc định.
Bất kỳ cơ hội nào để giải quyết điều này đơn giản/thanh lịch/etc? : D
liên quan: Ninject thread cụ thể http://stackoverflow.com/questions/9186560/ninject-inject-a-dependency-into-a-custom-model-binder-and-using-inrequestscope –