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