use*_*084 -1 c# refactoring overriding overloading
我有这两个功能
private void calcResults()
{
MakePath(id, results, _resultCount);
MakePath(id, "XYZ", _resultSICount)
}
private string MakePath(string subFolder, object obj, int index)
{
string dir = System.IO.Path.Combine(_outputDir, subFolder);
string fileName = string.Format("{0} {1} {2}.xml",
obj.GetType().Name, _dateTimeSource.Now.ToString(DATE_FORMAT), index.ToString());
return System.IO.Path.Combine(dir, fileName);
}
private string MakePath(string subFolder, string tempFileName, int index)
{
string dir = System.IO.Path.Combine(_outputDir, subFolder);
string fileName = string.Format("{0} {1} {2}.xml",
tempFileName, _dateTimeSource.Now.ToString(DATE_FORMAT), index.ToString());
return System.IO.Path.Combine(dir, fileName);
}
Run Code Online (Sandbox Code Playgroud)
请帮助一下.
谢谢
小智 7
如果我正确理解你的问题,你的意思是你想重载方法以避免代码重复...这就是我如何去做.
private void calcResults()
{
MakePath(id, results.GetType(), _resultCount);
MakePath(id, "XYZ", _resultSICount)
}
private string MakePath(string subFolder, Type type, int index)
{
return MakePath(subFolder, type.Name, index);
}
private string MakePath(string subFolder, string tempFileName, int index)
{
string dir = System.IO.Path.Combine(_outputDir, subFolder);
string fileName = string.Format("{0} {1} {2}.xml",
tempFileName, _dateTimeSource.Now.ToString(DATE_FORMAT), index.ToString());
return System.IO.Path.Combine(dir, fileName);
}
Run Code Online (Sandbox Code Playgroud)
我会避免使用object作为第二个参数的类型,因为在这种情况下它似乎不明确,使用Type表示参数的预期用途.