ASP.NET MVC Unity - 在模型层注入

时间:2009-10-05 20:39:20

标签: asp.net asp.net-mvc unity-container

我看到有关如何使用ControllerBuilder.Current.SetControllerFactory注入服务的大量材料,但如果我想在模型中解析我的服务该怎么办?我是否必须从Controller层获取它们并将它们传递出去?

1 个答案:

答案 0 :(得分:1)

理想情况下,您不应该将服务注入模型中,因为这需要您使用容器注册模型。

如果需要在模型实例中使用服务,请将服务作为方法参数传递,然后将服务注入控制器。

在不了解情景的情况下,很难给出更明确的建议,但以下大纲可能有所帮助:

public interface IService
{
  // ... describe the contract the service must fulfill
}

public class Model
{
  public void DoSomething( IService service )
  {
    // ... do the necessary work using the service ...
  }
}

public class AController : Controller
{
  private readonly IService _injectedService;

  public AController( IService injectedService )
  {
    _injectedService = injectedService;
  }
  public ActionResult SomeAction( int modelId )
  {
    // ... get the model from persistent store
    model.DoSomething( _injectedService );
    // ... return a view etc
  }
}