目前我有这个方法:
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像现在这样在这里使用,但有可能以其他方式实现吗?谢谢!
12345678_0001
相关分类