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)
)