Самым простым решением для этого является использование шаблона локатора службы внутри реализации ограничения для извлечения объекта IConfiguration
.
Так что в методе «IsValidForRequest» извлекайте службу через контекст HTTP:
public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
{
var configuration = routeContext.HttpContext.RequestServices.GetService<IConfiguration>();
// do something with the configuration
}
В качестве альтернативы, вы также можете реализовать IActionConstraintFactory
, который позволил бы вам правильно разрешить зависимости, используя внедрение конструктора.Это потребует от вас реализации IActionConstraint
самостоятельно.Так что для этого простого требования использование ActionMethodSelectorAttribute
с указателем службы, вероятно, проще.