如何使用不同的输入参数重载两个方法

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表示参数的预期用途.