Я хочу вернуть строковое значение от анонимного метода / делегата. Как я могу добиться чего-то подобного: Обратите внимание, что это даст ошибку времени компиляции: Невозможно преобразовать анонимный метод в тип 'string', потому что это не тип делегата
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", delegate()
{
return "bbb";
});
Я также пытаюсь создать метод расширения, чтобы я мог написать такой код:
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", () =>
{
return "bbb";
});
Какой будет подпись метода продления?
EDIT:
У нас есть большой внутренний класс, который генерирует утомительные XML-файлы. Мы хотим сделать метод более читабельным, больше всего на свете. Итак, мы хотим пойти
от:
StringBuilder sb = new StringBuilder(_repository.GetGenericXml1Template());
sb.Replace("$Placeholder", GetXml1Helper());
private void string GetXml1Helper()
{
StringBuilder sb = new StringBuilder(_repository.GetGenericXml2Template());
sb.replace("$Var1", DB.Var1);
....
return sb.ToString();
}
Таким образом, вместо того, чтобы десятки вспомогательных методов делали слегка похожие вещи, мы хотим по крайней мере сделать код более читабельным.
Кому:
StringBuilder sb = new StringBuilder(_repository.GetGenericXml1Template());
sb.Replace("$Placeholder", () =>
{
StringBuilder sb = new StringBuilder(_repository.GetGenericXml2Template());
sb.replace("$Var1", DB.Var1);
....
return sb.ToString();
}
);