有沒有什麼辦法,使這樣的工作代碼:鑄造類型參數爲基本型無拳
public class Func2<A, B>
{
private Func<A, B> f;
public Func2(Func<A, B> f)
{
this.f = f;
}
public object invoke(object obj, long l)
{
if (typeof(B) == typeof(long))
{
if (obj != null)
l = (long)obj;
return f((B)l); //error! cannot convert type 'long' to 'B'
} else {
return f((B)obj);
}
}
}
這裏的問題是,我不能直接投B到長時間沒有鑄造B首先反對。我試圖避免不惜一切代價,因爲這會減慢很多功能的快速操作。那麼有什麼辦法可以做到這一點?
我知道我實際上可以定義一個專門的Func2來專門處理B長的情況。但隨着函數的長度增長,長和對象的組合將呈指數級增長 - 而且在實際使用情況下,我還希望支持雙打!有沒有什麼辦法可以在沒有拳擊的情況下支持這個?也許有不安全的代碼?
謝謝! Cauê
什麼是你想在這裏做?如果你讓我們知道可能會有更好的方法 – 2011-01-26 17:34:12
我正在爲C#編寫一個haXe(haxe.org)目標,並且我試圖找到用C#代表HaXe函數類型的最佳方法。 HaXe函數類型與CLR不同,允許將Func轉換爲Func