我有一個叫做NotificationScheduler的單例類。我真的只可能在我的應用程序中有這些。單件模式是通過「實例」屬性實現,只能通過這個屬性這樣訪問實例:在XAML中使用單例 - 可能嗎?
private static NotificationScheduler _instance = null;
public static NotificationScheduler Instance
{
get { return _instance ?? (_instance = new NotificationScheduler()); }
}
public NotificationScheduler()
{
#if DEBUG
if (_instance != null)
Debug.WriteLine(
"WARN: A second Instance of NotificationScheduler has been created");
#endif
_instance = this;
init();
}
但我也有一個原因要在XAML中創建這樣的:
<NotifyIcon:NotificationScheduler x:Key="NotificationScheudlerInstance"
IconSource="/Images\Icons/myicon.ico"
我知道這不使用實例屬性!這甚至可能嗎?如果我訪問實例在這樣的代碼,一個實例被創建過程中的兩次:
NotificationScheduler.Instance.DoSomething();
NotificationScheduler n = (NotificationScheduler) FindResource("NotifyIcon");
n.DoSomething();
此刻,我的解決辦法是做FindResource事情通過XAML代碼來創建實例,然後一切正常精細。
問題:我可以通過訪問靜態屬性在XAML中創建資源嗎?
每當我聽到單身人士,我去這裏:http://csharpindepth.com/articles/general/singleton.aspx – Rudi
除了下面關於.NET 4.5和靜態的答案。一種可能性是管理工廠或IOC庫中支持單例的類接口之外的單例。 – kenny
@Rudi是的,這是我們給受訪者閱讀的一些代碼來自的帖子。但它與這個問題無關;-) – Akku