У меня есть общий метод, подобный этому (упрощенная версия):
public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param)
{
return action((T)param);
}
В приведенном выше примере param
имеет тип object
. Это часть требования.
Когда я заполняю типы, я могу назвать это следующим образом:
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)
)