2

带有 ServiceSTack Mvc 电源包的 Asp.Net mvc

AppHost中有一行:

ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));

所以这是我的代码

public class BaseController<T>:Controller
{
   protected IRepository<T> Repository {get;set;}

   public ActionResult Detail(T t){}
}

public class CarController:BaseController<Car>
{
}

我将在 App.Host 中使用此代码

container.Register<IRepository<Car>>(c => new CarRepository());

我如何使用 AutoWire 存储库?

4

1 回答 1

2

只有公共属性或构造函数被注入,所以尝试通过以下方式使 Repository 公开:

public class BaseController<T>:Controller
{
   public IRepository<T> Repository {get;set;}

   public ActionResult Detail(T t){}
}

public class CarController:BaseController<Car> {}

此外,如果您使用的是MVC PowerPack,您可能希望从ServiceStackController继承,这会给您带来很多好处,例如使用 ServiceStack 的 JSON 序列化,可以访问 ServiceStack 的共享缓存和会话提供程序以及能够共享 ServiceStack身份验证/ MVC 控制器和ServiceStack Web 服务(如果您正在使用)的授权功能。

于 2012-05-29T00:34:32.000 回答