я хочу вернуть строковое значение из анонимного метода/делегата. Как я могу добиться чего-то вроде этого: обратите внимание, что это приведет к ошибке времени компиляции: невозможно преобразовать анонимный метод в тип «строка», потому что это не тип делегата
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", delegate()
{
return "bbb";
});
Я также пытаюсь создать метод расширения, чтобы я мог писать код, например:
StringBuilder sb = new StringBuilder("aaa");
sb.Replace("aaa", () =>
{
return "bbb";
});
Какой будет подпись метода расширения?
РЕДАКТИРОВАТЬ:
У нас есть большой внутренний класс, который генерирует утомительные 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();
}
Таким образом, вместо того, чтобы иметь десятки вспомогательных методов, делающих несколько похожие вещи, мы хотим, по крайней мере, сделать код более читабельным.
To:
StringBuilder sb = new StringBuilder(_repository.GetGenericXml1Template());
sb.Replace("$Placeholder", () =>
{
StringBuilder sb = new StringBuilder(_repository.GetGenericXml2Template());
sb.replace("$Var1", DB.Var1);
....
return sb.ToString();
}
);