在 C# 中,我如何创建一个扩展方法,该方法采用带有通用参数 Func<T, TResult> 作为参数的 lambda。
In C# how do I create an extension method that takes a lambda with generic parameters, Func<T, TResult> as a parameter.
我正在尝试创建一个将 Func 作为参数的扩展方法,但出现错误。这是我得到的:
public static class MyExtensions
{
public static TResult ModifyString<T, TResult>(this string s, Func<T, TResult> f)
{
return f(s);
}
}
在 return f(s);
行我得到一个错误:Error CS1503 Argument 1: cannot convert from 'string' to 'T'
如何指定具有通用参数 T
和通用 return 类型的通用 lambda Func TResult
?
问题是您正在将 "s" - 一个字符串传递到声明为接受类型 "T" 的函数中。
更改 func 以接收字符串而不是 T,并且 return 接收字符串以使此代码可以处理字符串。
public static class MyExtensions
{
public static string ModifyString(this string s, Func<string, string> f)
{
return f(s);
}
}
假设您只想要一个字符串结果。
作为 ,你已经知道参数类型T
,所以你只需要指定TResult
:
public static TResult ModifyString<TResult>(this string s, Func<string, TResult> f)
{
return f(s);
}
或持续通过 T
:
public static TResult Modify<T, TResult>(this T s, Func<T, TResult> f)
{
return f(s);
}
我正在尝试创建一个将 Func 作为参数的扩展方法,但出现错误。这是我得到的:
public static class MyExtensions
{
public static TResult ModifyString<T, TResult>(this string s, Func<T, TResult> f)
{
return f(s);
}
}
在 return f(s);
行我得到一个错误:Error CS1503 Argument 1: cannot convert from 'string' to 'T'
如何指定具有通用参数 T
和通用 return 类型的通用 lambda Func TResult
?
问题是您正在将 "s" - 一个字符串传递到声明为接受类型 "T" 的函数中。
更改 func 以接收字符串而不是 T,并且 return 接收字符串以使此代码可以处理字符串。
public static class MyExtensions
{
public static string ModifyString(this string s, Func<string, string> f)
{
return f(s);
}
}
假设您只想要一个字符串结果。
作为T
,所以你只需要指定TResult
:
public static TResult ModifyString<TResult>(this string s, Func<string, TResult> f)
{
return f(s);
}
或持续通过 T
:
public static TResult Modify<T, TResult>(this T s, Func<T, TResult> f)
{
return f(s);
}