Ich habe eine Erweiterungsmethode für die IEnumerable-Schnittstelle, die einen Delegaten vom Typ nimmt Func<T, bool?>
als Argument:Func Delegierten arbeiten unerwartet
public static bool? ForEach<T>(this IEnumerable<T> source, Func<T, bool?> func)
{
bool? commandSuccessful = true;
foreach (var element in source)
{
var rv = func(element);
if (rv == null)
{
return null;
}
if (rv == false)
{
commandSuccessful = false;
}
}
return commandSuccessful;
}
Aber die gleiche Extension-Methode noch verwendet werden, wenn die Unterschrift des func Func <T, RuntimeDetails, bool?>
ist:
RuntimeDetails lastRuntimeDetails = null;
var startCommandSuccessful =
activeConfiguration.Applications.ForEach(
_ => PrepareRuntimeDetailsAndDownload(_ , ref lastRuntimeDetails));
private bool? PrepareRuntimeDetailsAndDownload(Application configurationApplication,
ref RuntimeDetails lastRuntimeDetails)
{...}
Ich bin verwirrt und fröhlich zur gleichen Zeit. Warum hat es funktioniert? Wenn es nicht funktioniert habe ich keine Ahnung, wie ich die Erweiterung schreiben würde, weil der RuntimeDetails
Parameter in der Erweiterungsmethode unbekannt ist.
Warum wird die Frage abgelehnt? – meonstackexchange