User エンティティがあり、コンストラクターでその 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 と 2 つの Create メソッド (GET 用と POST 用) があります。GET 用のものは単純ですが、POST 用のものはそれほど単純ではなく、それほど前向きでもありません:P を構築できるようにするために、ITimeProvider の実装の参照を取得するようにモデル バインダーをいじる必要があるためです。ユーザー インスタンス。
public class UserController : Controller {
[HttpGet]
public ViewResult Create() {
return View();
}
[HttpPost]
public ActionResult Create(User user) {
// ...
}
}
また、デフォルトのモデル バインダーのすべての機能を保持できるようにしたいと考えています。
このシンプル/エレガント/その他を解決する機会はありますか? :D