7

使用 HttpClient 实例和 HttpClientHandler 实例(.Net Framework,不使用 Core)时,是否可以稍后以任何方式访问 HttpClientHandler 实例/其属性(用于只读目的)?

不幸的是,创建 HttpClientHandler 实例作为稍后引用的变量是不可能的,因为 HttpClient 实例正在作为参数传递给库,我们无法更改调用客户端。

例如,我想实现这样的目标:

// Created in client we cant modify   
var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = True, PreAuthenticate = True });

// Class we can modify
public void DoSomething(HttpClient client)
{
    if (client.HttpClientHandler.UseDefaultCredentials == True) Console.WriteLine("UseDefaultCredentials: True");
}
4

1 回答 1

0

让我重新编辑我的答案。使用构造函数

public class MyClass {
  private readonly HttpClientHander _handler;
  private readonly HttpClient _client;

  public MyClass() {
     _handler = new HttpClientHander() { /* Initialize the properties */ }
     _client = new HttpClient(_handler);
  }

  public void MyMethod() {
    if (_handler.TheProperty == true;) // Do something
  }
}

我希望这是有道理的。由于引用对象的方式,我确信它可以工作。

于 2020-07-20T18:34:32.803 回答