В настоящее время у меня есть этот метод:
public void CreateDefaultTextPart(Func<string> methodName)
{
CreateTextPart("DefaultText.txt", (string text) =>
{
Regex regex = new Regex(string.Join("|", replacements.DefaultText().Keys.Select(x => Regex.Escape(x))));
string replaced = regex.Replace(text, m => replacements.DefaultText()[m.Value]);
return replaced;
}
);
}
, где replacements
является структурой.
У меня есть несколько этих методов, которые довольно похожи, единственное отличие состоит в том, что часть кода, в которой структура replacement
вызывает свои методы.Поэтому вместо того, чтобы повторять метод CreateTextPart
для каждого метода, который находится в структуре, я хотел бы просто вызвать универсальное имя метода следующим образом:
replacements.methodName()
Где methodname()
может быть любым допустимым методомчто я передаю, что существует в структуре.Поэтому я могу передать параметр methodname
непосредственно в CreateTextPart
, вместо того, чтобы несколько методов делали одно и то же.
В настоящее время я вызываю такие методы:
public void CreateTextFile()
{
CreateDefaultTextPart(SomeTestMethod); //"SomeTestMethod" is not used by any means here.
CreateRedTextPart();
CreateEndTextPart();
}
И я хотел бы просто сделать это, если это возможно:
public void CreateTextFile()
{
CreateDefaultTextPart(DefaultText);
CreateDefaultTextPart(RedText);
CreateDefaultTextPart(EndText);
}
Полученный метод должентогда выглядите так:
public void CreateDefaultTextPart(Func<string> methodName)
{
CreateTextPart("DefaultText.txt", (string text) =>
{
Regex regex = new Regex(string.Join("|", replacements.methodName().Keys.Select(x => Regex.Escape(x))));
string replaced = regex.Replace(text, m => replacements.methodName()[m.Value]);
return replaced;
}
);
}
Конечно, с более подходящим названием.
Я знаю, что не могу использовать Func
здесь, как я делаю, но возможно ли достичь этого каким-то другим способом?Спасибо!