HttpWebRequest集合初始值设定项C#
通过HttpWebRequest.Create(url)使用HttpWebRequest时,是否有比以下更简单的方法通过使用对象初始值设定项初始化HttpWebRequest:HttpWebRequest集合初始值设定项C#,c#,.net,httpwebrequest,webrequest,system.net.httpwebrequest,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);
class RequestLight
{
public HttpWebRequest WebRequestObj;
public RequestLight(string url)
{
WebRequestObj = HttpWebRequest.CreateHttp(url);
}
}
现在可以这样使用(webreq对象的对象初始值设定项的预期效果)
我错过什么了吗?或者这是获得预期效果的最简单方法
注意:使用最初的方法,您必须设置通过静态方法创建对象,然后逐个分配每个属性。听起来您正在寻找一种方法来在一条语句中初始化请求,否则只使用两条语句更简单 有一个相当简单的替代方法,使用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;
x.Date = DateTime.UtcNow;
});
你是指对象初始值设定项,而不是集合初始值设定项。但不清楚为什么您首先要使用
RequestLight
。为什么不只做两个陈述呢var-request=HttpWebRequest.CreateHttp(url);request.CookieContainer=null代码>是的,我指的是对象初始值设定项。这是为了方便(而且对象初始值设定项处理起来更干净)。构建的应用程序和工具都会分析web属性,因此需要以最佳方式初始化请求。如果必须在单个表达式中进行初始化,则对象初始值设定项更易于处理。但是如果它是一个普通的局部变量,我会说你的语法比两个语句要简单得多。我认为,我的答案中的建议不那么晦涩难懂(而且更加笼统),但在大多数情况下,我可能仍然会使用两种说法。@JonSkeet这更像是一种模式。当初始化对象时,整个代码库+最佳实践都希望所有属性都已计算出来。当对象为init.时,将对其进行配置,甚至还会在同一行中发出请求。与每个开发人员先创建一个web请求对象,然后配置它,再调用它相比,它更易于管理。与Obj。伊尼。当站点拒绝您的请求时,您不必遵循开发人员正在进行的web请求对象跟踪,它会在一个位置进行配置和发送。我还应该补充一点,在示例中只分配了一个属性,但通常会有更多属性。
var request = WebRequest.CreateHttp(uri)
.Initialize(x => x.CookieContainer = null);
var request = WebRequest.CreateHttp(uri).Initialize(x => {
x.CookieContainer = null;
x.Date = DateTime.UtcNow;
});