1

特定のディレクトリから音楽ファイルをロードし、これらを操作して保存する C# Windows Forms アプリケーションを構築しています。

音楽固有のメソッド (関数) を持つカスタム クラスがあります。特定の引数でこれらのメソッドを呼び出すために、メインフォームクラスにインスタンスを作成しました。メソッドは、動作するデータ (ファイルパスなど) を必要とするだけでなく、場合によっては、アプリケーション オプションからいくつかの値をロードする必要もあります (つまり、アプリケーションが特定のディレクトリからどの音楽ファイル拡張子をロードする必要があるか)。これらのオプションをロードする最善の方法は何ですか?

メインフォームクラスでオプションクラスのインスタンスを作成し、インスタンス全体を呼び出したすべての関数 (メソッド) に渡す必要がありますか? または、オプション クラスのインスタンスをカスタム音楽クラスに格納する必要がありますか?

メインクラス:

public partial class mainForm : Form
{
    private MusicFunctions mf = new MusicFunctions();
    public mainForm()
    {...}

    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
      ...
      mf.loadMusicFiles(path, true);
      // btw what's the best approach to load data into form objects (i.e. DataGridView)? Should I pass those as arguments to my functions or create a new object in my custom function and return it as a function return value?
    }

    private void optionsChangeButton_Click(object sender, EventArgs e)
    {
        // I would have to create functions inside musicFunction class to be able to change options
        int a = 10;
        mf.ChangeOptions(a);
        ...
    }

}

MusicFunctions クラス

public class MusicFunctions
{
    private MyOptions options;
    public class MusicFunctions()
    {
        options = new Options();
    }

    public void loadMusicFiles(string filepath, bool includeSubfolders = false)
    {
      foreach (string ext in options.Extensions)
      {
           ....
      }
    }
}
4

1 に答える 1

0

これらのオプションの範囲によって異なります。これらのオプションが 1 回だけ読み取られ、プログラムと関係がある場合、クラス インスタンスはアプリケーションによって保持される必要があります (または、オプションを .config ファイルに格納し、その場合は Framework クラスを使用してそれらを読み取ることができます)。オプションが音楽に関係する場合、その曲を表すクラスのインスタンスがそれを保持する必要があります。

また、質問のコメントで @EliAlgranti の提案を確認してください。

于 2013-05-07T21:58:00.167 に答える