1

ファイルを選択してファイル名を返すために何度も何度もコピーするメソッドがあり、ケースバイケースで変更するのにうんざりしたので、先に進み、そのためのいくつかのオーバーロードを作成することにしましたそれは私がそれを使用するほとんどの方法をカバーします.

これは最も基本的なオーバーロードです:

    public void OpenFiles(out string path)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        if (ofd.ShowDialog() == DialogResult.OK)
            path = ofd.FileName;
        else
            path = null;
        return;
    }

ファイル拡張子またはファイル拡張子のセットを指定したい場合があり、最初はファイルの種類ごとに個別のオーバーロードを作成するつもりでしたが、誰かがメソッドを使用してオーバーロードで選択できる、より一般的なものを作成したいと考えています。開くことができるファイルを制限する 1 つまたは複数の拡張機能。

最初に、次のようなオーバーロードを書き始めました。

    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 (*.*)|*.*";
    }
}

しかし、これは私の最初のメソッドの書き方と一致しないことを知っています.誰か提案があるか、すでにこのようなものを持っているライブラリを知っていますか?

4

2 に答える 2