我有一个扩展类,扩展了Func<T, TResult>
其签名,如下所示:
public static ITryAndReturnValue<TResult> Try<T, TResult>(this Func<T, TResult> func, T arg, int retries)
我可以通过将方法强制转换为Func<T, TResult>
这样来在方法上实现它...
Func<string, string> func = request.DownloadString;
string response = func.Try(urlA, 3);
但是我真正想做的是:
string response = request.DownloadString.Try(urlA, 3);
但是我得到这个编译时错误。
CS0119'WebClient.DownloadString(string)'是一个方法,在给定的上下文中无效
有什么我可以做的让我的扩展方法按我希望的那样工作的方法吗?
不,您不能在方法组或匿名函数上调用扩展方法。
C#规范的7.6.5.2节要求:
从expr到M j的第一个参数的类型存在隐式标识,引用或装箱转换。
(其中expr是您尝试调用扩展方法的表达式,而M j是扩展方法本身。)
甲方法团转化(这允许编写的转化Func<string, string> func = request.DownloadString;
)是不标识,参考或装箱转换。这是一种单独的转换(规范的6.6节)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句