有什么办法可以在此处概括类型定义? 理想情况下,我希望能够改变'testInput'的类型,并在编译时让测试正确地推断出类型。C#通用方法类型自变量推断
public static void Run()
{
var testInput = 3;
var test = ((Func<int, int>) Identity).Compose<int,int,int>(n => n)(testInput);
Console.WriteLine(test);
}
public static Func<T, V> Compose<T, U, V>(this Func<U, V> f, Func<T, U> g)
{
return x => f(g(x));
}
public static T Identity<T> (this T value)
{
return value;
}
更新: 我可以指定传递到撰写该函数的类型,但是这仍然指定线路类型。
public static void Run()
{
var testInput = 3;
var identity = (Func<int, int>) Identity;
var test = identity.Compose((int n) => n)(testInput);
Console.WriteLine(test);
}
一点内容;我通过韦斯代尔的The Marvel of Monads
你能提供更多关于你想达到的具体信息吗?目前,您的Compose函数太松散地限制为允许从lambda类型推断T。它根本无法从使用中获得足够的信息。 – jeffora 2010-05-13 07:39:49
更新了问题。 – CaptainCasey 2010-05-13 07:52:40