1

我正在构建一个 C# Windows 窗体应用程序,它将从给定目录加载音乐文件,对这些文件进行一些操作并保存它们。

我有一个带有音乐特定方法(功能)的自定义类。我在主窗体类中创建了它的实例,以使用给定的参数调用这些方法。这些方法不仅需要使用数据(即文件路径),而且有时它们还需要从应用程序选项中加载一些值(即应用程序应从给定目录加载哪些音乐文件扩展名)。加载这些选项的最佳方法是什么?

我是否应该在主窗体类中创建一个选项类的实例并将整个实例传递给我调用的每个函数(方法)?或者我应该将选项类实例存储在我的自定义音乐类中?

主类:

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

这取决于这些选项的范围。如果这些选项只读取一次并且与程序有关,则类实例应该由应用程序持有(或者您可以将选项存储在 .config 文件中并在这种情况下使用框架类来读取它们)。如果选项与音乐有关,则代表该歌曲的类的实例应该包含它。

还要在您问题的评论中查看@EliAlgranti 的建议。

于 2013-05-07T21:58:00.167 回答