在 Xamarin iOS 应用程序中,我能够在运行时指定要使用的 HttpClient 实现:
理想情况下,在运行时我需要知道在编译时项目设置中选择了哪个httpHandler,以便在运行时将其包装在myDel中。我该怎么做?
更新:我能够找到负责在mono源代码中选择适当处理程序的代码:https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/HttpClientEx.cs#L28 但是RuntimeOptions类是内部类,我只能在运行时通过反射使用它。 在这种情况下,Xamarin的链接器会从发布模式的dll中剥离RuntimeOptions,导致应用程序在发布和adhoc构建中崩溃,但在调试中不会。 有人知道在启用链接器的Xamarin构建中会发生什么事情,以便我能够利用它来查找运行时httphandler吗?
https://developer.xamarin.com/guides/cross-platform/macios/http-stack/
然而,这个设置只影响使用默认构造函数构建的 HttpClients:var client = new HttpClient()
但是如果我想通过向构造函数提供自定义的DelegatingHandler来为我的http客户端添加一些请求拦截,该怎么办?那么我将使用另一个构造函数:
var myDel = new MyDel(RUNTIME_HANDLER_GOES_HERE);
var client = new HttpClient(myDel);
理想情况下,在运行时我需要知道在编译时项目设置中选择了哪个httpHandler,以便在运行时将其包装在myDel中。我该怎么做?
更新:我能够找到负责在mono源代码中选择适当处理程序的代码:https://github.com/mono/mono/blob/master/mcs/class/System.Net.Http/HttpClientEx.cs#L28 但是RuntimeOptions类是内部类,我只能在运行时通过反射使用它。 在这种情况下,Xamarin的链接器会从发布模式的dll中剥离RuntimeOptions,导致应用程序在发布和adhoc构建中崩溃,但在调试中不会。 有人知道在启用链接器的Xamarin构建中会发生什么事情,以便我能够利用它来查找运行时httphandler吗?