Частичный вывод типа

у меня есть общий метод вроде этого (упрощенная версия):

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)
)
13
задан Pieter van Ginkel 23 October 2010 в 10:47
поделиться