私はいくつかのリポジトリを持っています。それらとの連携は、インターフェースを通じて実現されますIRepository
。
ISessionで実現されたサンプル プロジェクト HomeController
コンストラクター。私がこれを書いたとき:
public class TestingController : Controller
{
private ISession session;
public TestingController(ISession session)
{
this.session = session;
}
//Some code here with this.session
}
それはうまくいきます。使用することにしたときIRepository
:
public class TestingController : Controller
{
private IRepository repository;
public TestingController(IRepository repository)
{
this.repository = repository;
}
//Some code here with this.repository
}
他のクラスのこのメソッドでは機能しませんWindsorControllerFactory
:
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path {0} culd not found!", requestContext.HttpContext.Request.Path));
}
return (IController)this.kernel.Resolve(controllerType);
}
例外があります
満たさなければならない依存関係があるため、コンポーネント 'MvcApplication1.Controllers.ResultsController' を作成できません。
'MvcApplication1.Controllers.ResultsController' は次の依存関係を待機しています: - 登録されていないサービス 'dal.Repository.IRepository'。
それを解決する方法は?
PS アセンブリdal.Repository
は機能しています。new dal.Repository.Repository()
代わりにどこにでも書くと、this.repository
それは機能します。