Я реализую настраиваемый механизм связывания параметров, который наследует HttpParameterBinding и будет применять настраиваемое поведение к определенным параметрам.В некоторых случаях я не хочу применять пользовательское поведение, и в этом случае я хочу следовать тому, что Web API делает по умолчанию.Это решение будет принято в ExecuteBindingAsync.Как мне реализовать это поведение по умолчанию в ExecuteBindingAsync?
Я полагаю, что это обычно делается путем простого не применения привязки параметра при регистрации привязки во время запуска (другими словами, обработчик для ParameterBindingRulescollection вернет null, что позволит веб-API связывать привязку по умолчанию с параметром)Однако в моем случае мне нужно решить, применять ли привязку во время выполнения , поэтому мне нужно сделать это в ExecuteBindingAsync.
Я хочу сделать что-то подобное в моем настраиваемом HttpParameterBindingкласс:
public override async Task ExecuteBindingAsync(ModelMetadataProvider metadataProvider, HttpActionContext actionContext, CancellationToken cancellationToken)
{
if (IsCustomBindingNeeded()) {
// apply custom binding logic... call SetValue()... I'm good with this part
}
else {
// ***************************************************************
// This is where I want to use the default implementation.
// Maybe something like this (using a made up class name):
await return new WhateverDefaultParameterBinding().ExecuteBindingAsync(metadataProvider, actionContext, cancellationToken);
// ...or at least be able to call GetValue() and get the correct value and then I can call SetValue()
// ***************************************************************
}
}
Я пытался вызвать GetValue (), но он всегда возвращает ноль.Я предполагаю, что есть некоторый дополнительный шаг, который необходимо выполнить, чтобы базовый класс (HttpParameterBinding) мог создать значение.
Я предпочитаю напрямую вызывать любой метод в .NET Framework, содержащий эту логику по умолчанию.Я бы предпочел не дублировать эту логику.