Внедрение зависимостей IModelValidator - PullRequest
0 голосов
/ 06 апреля 2020

В ASP. NET Ядро, как я могу получить доступ к DI в методе Validate IModelValidator?

Пример:


public class RollercoasterPassenger
{
    public string Name { get; set; }
    public int Height { get; set; }
}

public class RollercoasterPassengerValidatorAttribute : Attribute, IModelValidator
{
    public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context)
    {
        var model = (RollercoasterPassenger)context.Model;
        var minimumHeightProvider = (IMinimumHeightProvider)null; //get IMinimumHeightProvider somehow!!!
        var minimumHeight = minimumHeightProvider.GetMinimumHeight();
        if (model.Height < minimumHeight)
            yield return new ModelValidationResult("Height", $"You must be at least {minimumHeight} to ride");
   }
}

Спасибо !

1 Ответ

1 голос
/ 06 апреля 2020

ModelValidationContext Class имеет доступ к контексту текущего запроса.

//...

//get IMinimumHeightProvider somehow!!!
var minimumHeightProvider = context.ActionContext
    .HttpContext.RequestServices.GetService<IMinimumHeightProvider>(); 

//...

Это больше похоже на поиск сервисов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...