我正在尝试使用
public static string TryGetRequestValue(this HttpRequest stringArg, int maxLengthArg)
{
return null;
}
作为扩展方法,它无法正常工作,我收到错误消息'方法TryGetRequestValue没有重载'等等......
然而,当我取出HttpRequest arg并将其更改为字符串时,它可以工作....为什么会这样?
任何帮助都非常感激。
答案 0 :(得分:2)
请参阅我在该问题下的评论,但基于此声明:
然而,当我拿出来的时候 HttpRequest arg并将其更改为 它的作品是什么......为什么会这样?
扩展方法中的第一个参数 - 前缀为this
的参数 - 确定要扩展的类型。所以调用这个方法的预期方法是:
HttpRequest instanceOfClassBeingExtended = new HttpRequest();
string returnValue = instanceOfClassBeingExtended.TryGetRequestValue(10000);
该方法返回string
,只接受一个参数:maxLengthArg
。
道歉,如果你已经知道这么多 - 发布抛出异常的代码,以及异常本身,将会更清楚。
答案 1 :(得分:0)
因为 HttpRequest 对象的 Params 集合是 NameValueCollection 类型的集合,所以无法直接检查是否存在某些键。但是这个类有 AllKeys 属性,它返回一个键数组,您可以使用 Linq 来检查键的存在,并通过 Get获取值( )方法:
public static string TryGetRequestValue(this HttpRequest request, string stringArg)
{
string result = null;
string[] keys = request.Params.AllKeys;
if( keys.Contains<string>(stringArg) )
{
result = request.Params.Get(stringArg);
}
return result;
}
然后您可以按如下方式调用该方法:
Request.TryGetRequestValue("someGetParam");