方法的隐式转换为Func <T,Tresult>

约兹皮

我有一个扩展类,扩展了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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Func <T,TResult>不是Func <T,TResult>

来自分类Dev

Func <T,TResult>访问参数

来自分类Dev

如何将委托`Func<T1, Func<T2, Task<TResult>>>` 转换为`Func<T1, Task<Func<T2, TResult>>`?

来自分类Dev

C#Func <T,TResult>参数验证

来自分类Dev

F#中的Func <T,TResult>属性

来自分类Dev

使用 Func<T,TResult> c#

来自分类Dev

从IEnumerable <T>隐式转换为MyCollection

来自分类Dev

从IEnumerable <T>隐式转换为MyCollection

来自分类Dev

如何从MethodInfo创建Action <Tᴺ>或Func <Tᴺ,从TResult>中创建

来自分类Dev

wpf dispatcher.invokeasync Func<T,T,TResult>

来自分类Dev

我应该选择Func <T,TResult>还是Converter <TIn,TOut>?

来自分类Dev

Lambda表达式到Func <T,TResult>

来自分类Dev

从数组[T]隐式转换为Seq [T]

来自分类Dev

Scala从Array [T]隐式转换为IndexedSeq [T]

来自分类Dev

在C#中将方法隐式转换为Func

来自分类Dev

Expression <Func <T,object >>到Expression <Func <T,TResult >>的一般拆箱

来自分类Dev

Expression <Func <T,object >>到Expression <Func <T,TResult >>的一般拆箱

来自分类Dev

表达式<Func <T1,T2,TResult >>和Sql IN

来自分类Dev

从uint8_t隐式转换为int时出错,但显式转换顺利时

来自分类Dev

以Func <in T1,out TResult>作为参数的协方差/协方差

来自分类Dev

预期对模拟进行一次调用,但使用Func(T,TResult)进行了0次

来自分类Dev

添加委托:添加两个Func <T,TResult>时出现意外结果

来自分类Dev

带有lambda表达式的Func(T,TResult)的离散总和

来自分类Dev

添加委托:添加两个Func <T,TResult>时出现意外结果

来自分类Dev

什么时候应该使用C#泛型Func <T,Tresult>?

来自分类Dev

为什么std :: unique_ptr不能隐式转换为T *和const T *?

来自分类Dev

为什么无法将ArrayList <ArrayList <T >>隐式转换为Iterable <Iterable <T >>?

来自分类Dev

无法将IEnumerable <T>的类型隐式转换为IEnumerable <T>

来自分类Dev

无法将类型“System.Collection.Generic.List<T>”隐式转换为“T”

Related 相关文章

  1. 1

    Func <T,TResult>不是Func <T,TResult>

  2. 2

    Func <T,TResult>访问参数

  3. 3

    如何将委托`Func<T1, Func<T2, Task<TResult>>>` 转换为`Func<T1, Task<Func<T2, TResult>>`?

  4. 4

    C#Func <T,TResult>参数验证

  5. 5

    F#中的Func <T,TResult>属性

  6. 6

    使用 Func<T,TResult> c#

  7. 7

    从IEnumerable <T>隐式转换为MyCollection

  8. 8

    从IEnumerable <T>隐式转换为MyCollection

  9. 9

    如何从MethodInfo创建Action <Tᴺ>或Func <Tᴺ,从TResult>中创建

  10. 10

    wpf dispatcher.invokeasync Func<T,T,TResult>

  11. 11

    我应该选择Func <T,TResult>还是Converter <TIn,TOut>?

  12. 12

    Lambda表达式到Func <T,TResult>

  13. 13

    从数组[T]隐式转换为Seq [T]

  14. 14

    Scala从Array [T]隐式转换为IndexedSeq [T]

  15. 15

    在C#中将方法隐式转换为Func

  16. 16

    Expression <Func <T,object >>到Expression <Func <T,TResult >>的一般拆箱

  17. 17

    Expression <Func <T,object >>到Expression <Func <T,TResult >>的一般拆箱

  18. 18

    表达式<Func <T1,T2,TResult >>和Sql IN

  19. 19

    从uint8_t隐式转换为int时出错,但显式转换顺利时

  20. 20

    以Func <in T1,out TResult>作为参数的协方差/协方差

  21. 21

    预期对模拟进行一次调用,但使用Func(T,TResult)进行了0次

  22. 22

    添加委托:添加两个Func <T,TResult>时出现意外结果

  23. 23

    带有lambda表达式的Func(T,TResult)的离散总和

  24. 24

    添加委托:添加两个Func <T,TResult>时出现意外结果

  25. 25

    什么时候应该使用C#泛型Func <T,Tresult>?

  26. 26

    为什么std :: unique_ptr不能隐式转换为T *和const T *?

  27. 27

    为什么无法将ArrayList <ArrayList <T >>隐式转换为Iterable <Iterable <T >>?

  28. 28

    无法将IEnumerable <T>的类型隐式转换为IEnumerable <T>

  29. 29

    无法将类型“System.Collection.Generic.List<T>”隐式转换为“T”

热门标签

归档