HttpWebRequest集合初始化程序C#

时间:2014-10-09 20:33:24

标签: c# .net httpwebrequest webrequest system.net.httpwebrequest

当通过HttpWebRequest.Create(url)使用HttpWebRequest时,使用对象初始化器初始化HttpWebRequest比以下更简单:

class RequestLight
{
    public HttpWebRequest WebRequestObj;

    public RequestLight(string url)
    {
        WebRequestObj = HttpWebRequest.CreateHttp(url);
    }

}

现在可以像这样使用(webreq对象的对象初始化器的期望效果)

var obj = new RequestLight("http://google.com") 
                { WebRequestObj = { CookieContainer = null } }.WebRequestObj;

我错过了什么吗?或者这是获得预期效果的最简单方法吗?

注意:使用原始方法设置通过静态方法创建对象,然后逐个分配每个属性。

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找一种在单个语句中初始化请求的方法 - 否则只使用两个语句就更简单了。

这是一个相当简单的替代方案,使用lambda表达式 - 虽然它非常讨厌......

public static class Extensions
{
    public static T Initialize<T>(this T value, Action<T> initializer) where T : class
    {
        initializer(value);
        return value;
    }
}

并将其命名为:

var request = WebRequest.CreateHttp(uri)
    .Initialize(x => x.CookieContainer = null);

或多个属性:

var request = WebRequest.CreateHttp(uri).Initialize(x => {
    x.CookieContainer = null;
    x.Date = DateTime.UtcNow;
});