我有一个方法,我一遍又一遍地复制来选择一个文件并返回一个文件名,我厌倦了逐个修改它,所以我决定继续为它写一些重载这将涵盖我使用它的大部分方式。
这是最基本的重载:
public void OpenFiles(out string path)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
path = ofd.FileName;
else
path = null;
return;
}
有时,我想指定一个文件扩展名或一组文件扩展名,起初我打算为每种文件类型编写一个单独的重载,但我想写一些更通用的东西,有人可以使用该方法并在重载中选择一个或多个扩展名将限制他们可以打开的文件。
起初我开始写这样的重载:
public void OpenFiles(string filter, out string path)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = filter;
if (ofd.ShowDialog() == DialogResult.OK)
path = ofd.FileName;
else
path = null;
}
但这并不是我想要的效果。然后我想写一个这样的扩展方法:
public class Filters
{
public string fileExtFilter(this ReturnFilePaths filePath, string filetype)
{
string txtFilter = "txt files (*.txt)|*.txt";
string csvFilter = "csv files (*.csv)|*.csv";
string xlsxFilter = "xlsx files (*.xlsx)|*.xlsx";
string xlsFilter = "xls files (*.xls)|*.xls";
if (filetype == "csv")
return csvFilter;
else if (filetype == "txt")
return txtFilter;
else if (filetype == "xlsx")
return xlsxFilter;
else if (filetype == "xls")
return xlsFilter;
else
return "All files (*.*)|*.*";
}
}
但我知道这与我编写初始方法的方式不符。任何人有任何建议或知道已经有类似内容的库吗?