Это может быть довольно просто, но я довольно новичок в Лямбде, так что терпите меня.
У меня есть функция, которая использует лямбда-функцию для рекурсии.
Основная функция получает логическое значение, говорящее, что она включает определенную информацию или нет в лямбду.
Функция предназначена для записи пользовательского класса в XML - я думаю, что код довольно понятен.
В данный момент я преодолел проблему, используя простое утверждение if, но мне страшно интересно, кто-нибудь знает лучший способ?
private XElement ErrorListToXml(ErrorList el, bool outputTagsOnly)
{
// Need to declare in advance to call within the lambda.
Func<ErrorType, XElement> recursiveGenerator = null;
if (outputTagsOnly)
recursiveGenerator = error => new XElement
(error.Name,
error.ChildErrors.Select(recursiveGenerator));
else
recursiveGenerator = error => new XElement
(error.Name,
new XAttribute("Ignore", error.Filter),
error.ChildErrors.Select(recursiveGenerator));
var element = new XElement
("ErrorList",
ChildErrors.Select(recursiveGenerator));
Console.WriteLine(element);
return element;
}