2014-01-09 132 views
0

直覺告訴我這是一個糟糕的主意......但是,我正在嘗試向MainWindow的成員添加一些子對象。以便MainWindow可以稍後使用這些成員。我無法將MainWindow對象傳遞給我的應用程序中的每種方法,所以這是另一種方法。我可能會讓MainWindow類的具體成員變成靜態全局變量,但是我想在此問一下......將MainWindow聲明爲全局靜態變量的危險

這樣做的危險是什麼?有沒有?這是不好的做法嗎?爲什麼?

namespace MyApp 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     Globals.Variables.MainClass = this; 
    } 
} 

Globals類:

namespace MyApp.Globals 
{ 
    class Variables 
    { 
     public static MainWindow MainClass = null; 
    } 
} 
+0

您可以詳細說明您需要添加到主窗口的成員嗎?瞭解你正在嘗試解決的實際問題可能會幫助我們給你更好的想法/選擇。 – Pete

+0

嗯,這實際上可以解決我的問題......哪些是發送狀態消息列表。其中許多可能來自「背景工作者」。如果存在危險,或者如果將主窗口設置爲應用程序的其餘部分公開可用的靜態類,這是一個不好的做法。 – teynon

+1

Perhpas是其他設計選擇的最後選擇。此外,你不需要在另一個類中創建靜態,只需在類MainWindows上聲明它:Window {public static MainWindow Instance {get;私人設置; }並在構造函數中設置實例。 – kenny

回答

0

我想通過我們的意見的討論/聊天的是,這個問題的答案是:

聲明的主窗口爲靜態並不一定是不好的做法,但這樣做的原因可能是不好的做法。當應用程序必須使用靜態變量來引用窗口的實例時,應用程序可能有一些可以用不同的,更簡單的方式設計的東西。