В идеале не следует вводить службы в модель, поскольку для этого потребуется зарегистрировать свою модель в контейнере.
Если вам нужно использовать службу в экземпляре модели, передайте службу в качестве аргумента метода, а затем вы можете внедрить службу в контроллер.
Не зная больше о сценарии, трудно дать более четкий совет, однако следующий план может помочь:
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
}
}