у меня есть общий метод вроде этого (упрощенная версия):
public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param)
{
return action((T)param);
}
В приведенном выше примере param
специально имеет тип объект
. Это часть требования.
Когда я заполняю типы, я могу назвать это так:
var test1 = PartialInference<string, bool>(
p => p.EndsWith("!"), "Hello world!"
);
Однако я бы хотел использовать вывод типов. Лучше всего написать так:
var test2 = PartialInference<string>(
p => p.EndsWith("!"), "Hello world!"
);
Но это не компилируется. Лучшее, что я придумал, это следующее:
var test3 = PartialInference(
(string p) => p.EndsWith("!"), "Hello world!"
);
Причина, по которой я хотел бы иметь это в качестве параметра типа и по-прежнему иметь правильно набранный тип возврата, заключается в том, что мои фактические вызовы выглядят примерно так:
var list1 = ComponentProvider.Perform(
(ITruckSchedule_StaffRepository p) => p.GetAllForTruckSchedule(this)
)
Что очень уродливо и Мне бы хотелось написать примерно так:
var list2 = ComponentProvider.Perform<ITruckSchedule_StaffRepository>(
p => p.GetAllForTruckSchedule(this)
)