2013-05-07 40 views
1

我正在構建一個C#Windows窗體應用程序,該應用程序將從給定目錄加載音樂文件,對它們執行一些操作並保存它們。如何設計應用程序 - 將應用程序選項值傳遞到自定義函數

我有一個具有音樂特定方法(函數)的自定義類。我已經在主窗體類中創建了它的實例,用給定的參數調用這些方法。這些方法不僅需要數據來處理(即文件路徑),但有時他們還需要從應用程序選項(即應用程序應從給定目錄加載哪些音樂文件擴展名)加載一些值。加載這些選項的最佳方法是什麼?

我應該在主窗體類中創建一個options類的實例,並將整個實例傳遞給我調用的每個函數(方法)?還是應該將選項類實例存儲在我的自定義音樂課程中?

主類:

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) 
     { 
      .... 
     } 
    } 
} 
+0

都沒有。您可能想了解MVP模式。 – 2013-05-07 21:56:46

回答

0

這取決於這些選項的範圍。如果這些選項只讀取一次並且與程序有關,那麼類實例應該由應用程序保存(或者您可以將選項存儲在.config文件中,並使用Framework類在這種情況下讀取它們)。如果選項與音樂有關,代表該歌曲的課程實例應該保留它。

還請在您的問題的評論中檢查@EliAlgranti的建議。

相關問題