将通用类型的参数 lambda 委托转换为对象



>我有以下方法:

void Foo<T1>(Func<T1, Exception> exceptionFunc)
{
   // Following line error: "Cannot convert from 'object' to 'T1'
   Func<object, Exception> exF = (e) => exceptionFunc(e);
   Foo2(exF);
}

我似乎无法弄清楚如何将Func的通用参数T1投射到Foo2()所需的object上,关于如何成功做到这一点的任何想法?

您必须将对象转换为 T1:

void Foo<T1>(Func<T1, Exception> exceptionFunc)
{
    // Following line error: "Cannot convert from 'object' to 'T1'
    Func<object, Exception> exF = obj => exceptionFunc((T1)obj);
    Foo2(exF);
}

注意:如果对象与 T1 不兼容,这将在运行时引发无效的强制转换异常。

最新更新