[英]Is it good idea to define OpenFileDialog as a static class?
我有帶有OpenFileDialog
應用程序,並且我不想每次用戶想要添加文件時都使用OpenFileDialog
新實例(使用Winforms
可以在設計器中完成)。 因此,將OpenFileDialog
定義為Static class
還是Singleton
是個好主意。
編輯
public static class OpenFileDialogCreation
{
public static OpenFileDialog openFileDialog;
public static void CreateDialog()
{
openFileDialog = new OpenFileDialog();
openFileDialog.Title = "Select File(s)";
openFileDialog.Filter = "*.doc|*.doc";
openFileDialog.Multiselect = true;
}
}
OpenFileDialog是一個小類。 圍繞非托管Windows api的微型.NET包裝器類。 只有在調用ShowDialog()時才會發生繁重的事情,而在關閉對話框時便會消失。 它的Winforms版本是可使用的(不是WPF版本),但這僅是因為它從Component繼承了Dispose()。 它什么也沒做。
唯一值得注意的內存使用情況是string [],用於存儲所選文件,即FileNames屬性的后備存儲。 通常只有一個,而您只能使用FileName,從技術上講,它可以是數千個。 超過兆字節的情況非常罕見。
因此,靜態不是一個嚴重的問題。 還是可取的。 不要忽略使用工廠方法的選項:
public static OpenFileDialog CreateDialog(string initialDir = null) {
var dlg = new OpenFileDialog();
dlg.Title = "Select Word documents";
dlg.Filter = "Word documents (*.doc,*.docx)|*.doc;*.docx";
dlg.DefaultExt = ".doc";
dlg.Multiselect = true;
if (initialDir != null) dlg.InitialDirectory = initialDir;
return dlg;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.