【发布时间】:2015-11-11 17:43:24
【问题描述】:
我毫不怀疑这是尽可能容易做到的,但我有一个函数创建器库,可以为我创建以下形式的 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> 返回它不是空值,所以我知道这不是我的问题所在)。
我该如何正确地做到这一点?
【问题讨论】:
-
旁注:如果你想投,那么投(即
(Func<T1, T2>)objFunc)。不要使用as,除非您有充分的理由这样做。这样一来,您的语句将很快以InvalidCastException失败,并且您不必跟踪NullReferenceExceptions 并“检查值是否为 null 以了解强制转换是否失败”。 -
正确执行此操作将涉及不使用执行此类不合理事情的函数创建库。问题出在那个库中。