Если я правильно понимаю проблему, проблема в том, что виртуальный метод SendAsync
в HttpMessageHandler
имеет значение protected
, но он хочет создать тип, в котором он равен public
, чтобы его можно было легко смоделировать.
Я не думаю, что есть способ скрыть виртуальный метод с помощью другого нового (publi c) вирулентного метода в F #, но я думаю, что ваш вариант использования сработает, если вы определили вирусный метод с другим именем и вызвал его из оригинального SendAsync
метода:
type TestHandler() =
inherit HttpMessageHandler()
abstract MockableSendAsync:
HttpRequestMessage * CancellationToken -> Task<HttpResponseMessage>
default this.MockableSendAsync(request, cancellationToken) =
base.SendAsync(request, cancellationToken)
override this.SendAsync(request, cancellationToken) =
this.MockableSendAsync(request, cancellationToken)