Tag: 全局变量

如何在WPF中保存全局应用程序变量?

在WPF中,我可以在一个UserControl中保存值 ,然后在另一个UserControl 中再次访问该值 ,例如Web编程中的会话状态,例如: UserControl1.xaml.cs: Customer customer = new Customer(12334); ApplicationState.SetValue(“currentCustomer”, customer); //PSEUDO-CODE UserControl2.xaml.cs: Customer customer = ApplicationState.GetValue(“currentCustomer”) as Customer; //PSEUDO-CODE 回答: 谢谢,Bob,这是我开始工作的代码,基于你的代码: public static class ApplicationState { private static Dictionary _values = new Dictionary(); public static void SetValue(string key, object value) { if (_values.ContainsKey(key)) { _values.Remove(key); } _values.Add(key, value); } public static T GetValue(string […]

C#:所以如果静态类是存储全局状态信息的不良做法,那么提供相同方便性的好方法是什么?

我一直注意到静态类在用于存储全局信息方面在SO上获得了很多不好的代表。 (而且全局变量一般被嘲笑)我只想知道下面的例子有什么好的选择…… 我正在开发一个WPF应用程序,并且根据当前登录用户的ID过滤了从我的数据库中检索到的数据的许多视图。 同样,我的应用中的某些点应该只能被视为“管理员”的用户访问。 我目前正在静态类中存储loggedInUserId和isAdmin bool。 我的应用程序的各个部分需要这些信息,我想知道为什么它在这种情况下不理想,以及替代品是什么。 起床和跑步似乎非常方便。 我唯一可以想到的替代方法是使用IoC容器将Singleton实例注入需要此全局信息的类中,然后类可以通过其接口与之通信。 然而,这是否过度/导致我陷入分析瘫痪? 提前感谢您的任何见解。 更新 因此,我倾向于通过IoC进行dependency injection,因为它可以更好地提供可测试性,因为我可以交换一个服务,如果需要,可以使用模拟提供“全局”信息。 我想剩下的是注入的对象是单身还是静态。 🙂 如果等待查看是否还有其他讨论,请问问Mark的答案。 我不认为这是正确的方式。 我只是想看到一些可以启发我的讨论,因为似乎有很多“这是坏的”,“这是坏的”,在没有任何建设性替代方案的情况下对某些类似问题的陈述。 更新#2所以我选择了罗伯特的答案,因为它是一个很好的选择(我认为替代方案是一个奇怪的词,可能是One True Way,因为它是内置于框架中)。 它并没有强迫我创建一个静态类/单例(尽管它是线程静态的)。 唯一让我感到好奇的是,如果我必须存储的“全局”数据与用户身份validation无关,那将如何处理。

使用全局变量的WPF应用程序

我在c#中创建了一个带有3个不同窗口的WPF应用程序, Home.xaml, Name.xaml, Config.xam l。 我想在Home.xaml.cs中声明一个我可以在其他两种forms中使用的变量。 我试过做public string wt = “”; 但那没用。 我怎样才能使这三种forms都可用?