C# 强制函数参数值

C# 强制函数参数值,c#,C#,我有以下函数,它发出HTTP请求并以字符串形式返回响应体: private string getResponseBody(string method, string partialUrl) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_hostPath + partialUrl); req.ContentLength = 0; req.KeepAlive = false; req.Method

我有以下函数,它发出HTTP请求并以字符串形式返回响应体:

private string getResponseBody(string method, string partialUrl)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_hostPath + partialUrl);
    req.ContentLength = 0;
    req.KeepAlive = false;
    req.Method = method;

    return new StreamReader(req.GetResponse().GetResponseStream()).ReadToEnd();
}
第一个参数method只能将通用HTTP方法作为值(GET、POST、PUT、DELETE)

要强制输入为这些值之一,我知道我需要创建一个对象,但我无法理解细节。有人能帮忙吗

PS:我正在使用4.0框架

要强制输入为这些值之一,我知道我需要创建一个对象

枚举如何:

public enum HttpMethod
{
    GET, 
    POST, 
    PUT, 
    DELETE
}
然后:

private string getResponseBody(HttpMethod method, string partialUrl)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_hostPath + partialUrl);
    req.ContentLength = 0;
    req.KeepAlive = false;
    req.Method = method.ToString();

    using (var response = req.GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        return reader.ReadToEnd();
    }
}

还请注意,我已经修复了GetResponse代码中的缺陷,您没有处理任何IDisposable对象,这可能导致泄漏和所有令人讨厌的东西。例如,如果您不处理响应对象,则如果多次调用此方法,可能会导致超时。

我会将该枚举命名为HttpMethod,除非它是标志枚举。非常感谢!IDisposable很好。您仍然需要进行检查以验证
方法的值。如果有人输入
(HttpMethod)10
,你可以使用
HttpMethod
类:并使用它的
ToString
方法。不幸的是,我使用的是4.0框架,而不是4.5我的道歉,我认为这个东西从一开始就存在。