我正在尝试创建一个方法,根据HttpMethod调用其他方法。我的方法看起来像这样:
public async Task<string> CreateAsync<T>(HttpClient client, string url, HttpMethod method, T data, Dictionary<string, string> parameters = null)
{
switch(method)
{
case HttpMethod.Post:
return await PostAsync(client, url, data);
case HttpMethod.Put:
return await PutAsync(client, url, data);
case HttpMethod.Delete:
return await DeleteAsync(client, url, parameters);
default:
return await GetAsync(client, url, parameters);
}
}
问题是,开关正在抱怨:
需要一个常量值
而且每个情况都被用红色下划线标出。 有人知道我做错了什么吗?
HttpMethod.Post
和其他所有的都不是常量,这也是switch语句所期望的。如果你查看源代码,你就会明白为什么了。你可以使用策略模式来解决这个问题。 - Nkosi