Как использовать одну функцию для хранения нескольких функций с разными параметрами (для HttpClient) - PullRequest
0 голосов
/ 15 октября 2018

Аналогично моему предыдущему вопросу , но также связан с этим вопросом, касающимся методов с различными параметрами Я хочу сделать следующее:

У меня есть переменная HttpClientкак в

HttpClient client= new HttpClient();

Теперь мы знаем, что у этого есть разные методы, такие как PostAsync и DeleteAsycn.Вы могли заметить, что аргументы для таких функций разные.(например, PostAsync имеет содержимое, которого нет DeleteAsync)

Я хочу иметь переменную, которая может содержать любую из этих функций (в зависимости от случая, это может быть Post или Delete или Get и т. д.)

Как мне это сделать?

1 Ответ

0 голосов
/ 15 октября 2018

Я предлагаю вам применить следующий подход (я пишу код на лету, я не проверял его, поэтому он может быть подвержен ошибкам, пожалуйста, проверьте его на себе):

public class IHttpDelegate {
  void run();
}

public abstract class HttpDelegate : IHttpDelegate {

  public HttpClient httpClient;

  public HttpDelegate(Uri uri) {
    this.httpClient = new HttpClient(uri);
  }

  protected httpClient {
    get {
      return this.httpClient ;
    }
  }
}

public class HttpPostDelegate : HttpDelegate {

  private HttpContect httpContent;

  public HttpPostDelegate (Uri uri) : base(uri) {
    this.httpContent = httpContent;
  }

  public HttpContect httpContent {
    get {
      return this.httpContent;
    }
  }

  public void run() {
    httpClient.PostAync(httpContent);
  }

}

public class HttpDeleteDelegate : HttpDelegate {

  public HttpDeleteDelegate (Uri uri) : base(uri) {
  }

  public void run() {
    httpClient.DeleteAync();
  }

}

Затем вы должны определить делегата на основе интерфейса IHttpDelegate .

Я надеюсь, что это может быть полезно!

...