я метод расширения для IEnumerable интерфейс, который принимает делегат типа Func<T, bool?>
в качестве аргумента:Func делегат работает неожиданно
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;
}
Но тот же метод расширения все еще можно использовать, когда подпись FUNC является Func <T, RuntimeDetails, bool?>
:
RuntimeDetails lastRuntimeDetails = null;
var startCommandSuccessful =
activeConfiguration.Applications.ForEach(
_ => PrepareRuntimeDetailsAndDownload(_ , ref lastRuntimeDetails));
private bool? PrepareRuntimeDetailsAndDownload(Application configurationApplication,
ref RuntimeDetails lastRuntimeDetails)
{...}
Я смущен и радостен в то же время. Почему это сработало? Если это не сработало, я понятия не имею, как я буду писать расширение, потому что параметр RuntimeDetails
неизвестен в методе расширения.
Почему вопрос остается без изменений? – meonstackexchange