c#转换函数到Func

本文关键字:T1 Func T2 转换 object 函数 | 更新日期: 2023-09-27 18:08:38

我毫不怀疑这是尽可能容易做到的,但我有一个函数创建器库,为我创建lambda函数的形式:

Func<T1, object>

并且我希望更具体地指定out参数-基本上,我希望能够创建以下内容:

private Func<T1, T2> GetFunc<T1, T2>(string expression)
{
    Func<T1, object> objFunc = CreateFunction(expression));
    return objFunc as Func<T1, T2>;
}

但是,当我尝试这样做时,我得到了一个null(顺便说一句,如果我返回objFunc作为Func<T1, object>它不是null,所以我知道这不是我的问题所在)。

我如何正确地做到这一点?

c#转换函数<T1, object>到Func<T1, T2>

尝试:

private Func<T1, T2> GetFunc<T1, T2>(string expression)
{
    Func<T1, object> objFunc = CreateFunction(expression));
    return arg=>(T2)objFunc(arg);
}

是否可以简单地将现有的函数调用包装在另一个对返回值执行强制转换的函数中?

return t1 => (T2)objFunc(t1);