我试图使用扩展方法不起作用?
public static string TryGetRequestValue(this HttpRequest stringArg, int maxLengthArg)
{
return null;
}
作为扩展方法,它不工作我得到错误信息“不超载的方法TryGetRequestValue”等等...
然而,当我走出HttpRequest参数并将其更改为一个字符串它的作品....这是为什么?
任何帮助非常感谢。
我试图使用扩展方法不起作用?
public static string TryGetRequestValue(this HttpRequest stringArg, int maxLengthArg)
{
return null;
}
作为扩展方法,它不工作我得到错误信息“不超载的方法TryGetRequestValue”等等...
然而,当我走出HttpRequest参数并将其更改为一个字符串它的作品....这是为什么?
任何帮助非常感谢。
请看问题在我的评论,但在此基础上声明:
然而,当我拿出 的HttpRequest ARG并将其更改为一个字符串 它的工作....这是为什么?
扩展方法中的第一个参数 - 前缀为this
的第一个参数确定正在扩展的类型。因此,预期的方式来调用这个方法是:
HttpRequest instanceOfClassBeingExtended = new HttpRequest();
string returnValue = instanceOfClassBeingExtended.TryGetRequestValue(10000);
该方法返回一个string
,并且只需要一个参数:maxLengthArg
。
道歉,如果你已经知道这么多 - 发布引发异常的代码,以及异常本身,将使这个更清晰。
因为PARAMS收集的HttpRequest对象是类型的NameValueCollection的集合,你不能直接检查一些重要的存在。但这个类有AllKeys属性,返回键的数组,你可以使用的LINQ检查钥匙存在和借)获取的手段(方法获得的价值:
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");
关键是你如何使用**它。请发布您调用该方法的代码,以及错误消息的其余部分。这会让您更容易找出问题所在! :) – 2010-11-26 16:54:31