有什麼辦法可以在此處概括類型定義? 理想情況下,我希望能夠改變'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