有没有什么办法,使这样的工作代码:铸造类型参数为基本型无拳
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