Подтвердить что ты не робот

С# Преобразование Func <T1, object> в Func <T1, T2>

Я не сомневаюсь, что это так же легко сделать, насколько это возможно, но у меня есть библиотека создателя функций, которая создает для меня лямбда-функции:

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>, это не нуль, поэтому я знаю, что не там, где моя проблема).

Как это сделать правильно?

4b9b3361

Ответ 1

Try:

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

Ответ 2

Будет ли работать простой перенос существующего вызова функции в другой, который выполняет листинг на возвращаемое значение?

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