Teilweise Typinferenz

Ich habe eine generische Methode wie diese (vereinfachte Version):

public static TResult PartialInference<T, TResult>(Func<T, TResult> action, object param)
{
    return action((T)param);
}

In obigem,param ist vom Typobject absichtlich. Dies ist Teil der Anforderung.

Wenn ich die Typen ausfülle, kann ich das so nennen:

var test1 = PartialInference<string, bool>(
    p => p.EndsWith("!"), "Hello world!"
);

Ich möchte jedoch die Typinferenz verwenden. Am liebsten würde ich folgendes schreiben:

var test2 = PartialInference<string>(
    p => p.EndsWith("!"), "Hello world!"
);

Aber dies wird nicht kompiliert. Das Beste, was ich mir ausgedacht habe, ist folgendes:

var test3 = PartialInference(
    (string p) => p.EndsWith("!"), "Hello world!"
);

Der Grund, warum ich dies als Typparameter haben möchte und trotzdem den korrekt eingegebenen Rückgabetyp habe, ist, dass meine tatsächlichen Aufrufe ungefähr so aussehen:

var list1 = ComponentProvider.Perform(
    (ITruckSchedule_StaffRepository p) => p.GetAllForTruckSchedule(this)
)

Was ist sehr hässlich und ich würde gerne so etwas schreiben:

var list2 = ComponentProvider.Perform<ITruckSchedule_StaffRepository>(
    p => p.GetAllForTruckSchedule(this)
)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage