gpt4 book ai didi

c# - 将用户帐户信息存储在单例对象上

转载 作者:行者123 更新时间:2023-11-30 15:21:37 25 4
gpt4 key购买 nike

我正在 Visual Studio 2015 中构建一个 MVVM Light WPF 应用程序。我有以下单例类:

public sealed class AppContextSingleton
{
private static readonly Lazy<AppContextSingleton> _instance =
new Lazy<AppContextSingleton>(() => new AppContextSingleton());

private AppContextSingleton()
{
}

public static AppContextSingleton Instance => _instance.Value;
public static string UserDisplayName { get; set; }
}

App.xaml.cs 中,我有以下代码来对用户进行身份验证并从 Active Directory 中获取此人的显示名称:

 protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

var appContext = AppContextSingleton.Instance;

// Code to authenticate user goes here...

var displayName = UserPrincipal.Current.DisplayName;
}

在这里,我想在 AppContextSingleton 上设置 UserDisplayName,然后从公共(public) Instance 属性中引用它。但是,Instance 不允许我访问 UserDisplayName 属性。我将如何设置此属性然后从 Instance 访问它?

我应该引用 Instance 还是 UserDisplayName?感谢您帮助理解这一点。谢谢。

最佳答案

问题是 UserDisplayName 是一个 static 属性。

这意味着它是这样访问的:AppContextSingleton.UserDisplayName

如果将其更改为实例属性 public string UserDisplayName { get;放; 它会按照你想要的方式工作。

旁注 1:我将从 AppContextSingleton 中删除 Singleton 后缀。

旁注 2:由于这是 WPF,您可能希望实现 InotifyPropertyChanged 并在值更改时发出通知,因为它是可变的。

旁注 3:它真的需要公共(public)集吗?

关于c# - 将用户帐户信息存储在单例对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37116198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com