В приложении Xamarin iOS я могу указать, какую реализацию HttpClient использовать во время выполнения:
https://developer.xamarin.com/guides/cross-platform/macios/http-stack/
Однако этот параметр влияет только на HttpClients, созданные с использованием ctor по умолчанию:
var client = new HttpClient()
Но что, если я хочу добавить перехват запросов к моему http-клиенту, предоставив ctor собственный DelegatingHandler? Затем я буду использовать другой ctor:
var myDel = new MyDel(RUNTIME_HANDLER_GOES_HERE);
var client = new HttpClient(myDel);
В идеале во время выполнения мне нужно знать, какой httpHandler выбран в настройках проекта времени компиляции, чтобы myDel обернул его во время выполнения. Как это сделать?
UPD Мне удалось найти код, отвечающий за выбор подходящего обработчика в исходниках моно: https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/HttpClientEx.cs#L28 однако класс RuntimeOptions является внутренним, и я могу использовать его только через отражение во время выполнения. Однако в этом случае компоновщик Xamarin удаляет RuntimeOptions из dll в режиме выпуска, и приложение аварийно завершает работу в выпусках и специальных сборках, но не в отладке. Кто-нибудь знает, что происходит с RuntimeOptions в сборке xamarin с поддержкой компоновщика, поэтому я могу использовать его, чтобы узнать httphandler во время выполнения?