假设我有一个用户实体,我想在构造函数中将它的 CreationTime 属性设置为 DateTime.Now。但是作为单元测试采用者,我不想直接访问 DateTime.Now 而是使用 ITimeProvider :
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; } }
}
我在我的 ASP.NET MVC 2.0 应用程序中使用 NInject 2。我有一个 UserController 和两个 Create 方法(一个用于 GET,一个用于 POST)。GET 的一个是直截了当的,但 POST 的一个不是那么直截了当,也不是那么直截了当:P 因为我需要弄乱模型绑定器来告诉它获取 ITimeProvider 实现的引用以便能够构造一个用户实例。
public class UserController : Controller {
[HttpGet]
public ViewResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(User user) {
// ...
}
}
我还希望能够保留默认模型绑定器的所有功能。
有没有机会解决这个简单/优雅/等等?:D