如何在 C# WinForms 应用程序(凭据)中创建全局用户?

How to create global user in C# WinForms app (credentials)?

我有一个包含用户名和密码的用户登录表单 - 我想将它们全局保存,以便在登录后可用。我尝试使用以下代码执行此操作:

 namespace PassManager
    {
      struct SesUser
        {
            int id;
            string username;
            string password;
        }
       public class US
        {
            SesUser uu;
        }

    }

我尝试声明一个只有一个成员 SesUserpublic class,我想在我的所有 cs 文件中访问该用户。请问这是正确的做法还是有更好的方法来完成这个任务?

您可以创建一个全局 class 来保存经过身份验证的用户名,然后如果该 class 用户名不为空,则可以访问。

或者你可以参考微软提供的这个link

How to: Implement User Login with Client Application Services

将您的 US class 设为静态,然后您就可以从任何地方访问它:

public static class US
{
    public static SesUser uu { get; set; }
}

然后您可以通过以下方式访问它:

US.uu

例如

System.Diagnostics.Debug.WriteLine($"{US.uu.id} {US.uu.username} {US.uu.password}");

转到 Project > Add Item > Class 并将其命名为 CurrentUser

然后在里面创建public static parameters

Static 创建可通过 class 名称本身访问的对象(不是从 class 创建的对象)

所以 CurrentUser class 的例子是这样的:

public static class CurrentUser
{
    public static string Name; //Accessible with CurrentUser.Name
    public static string FamilyName; //Accessible with CurrentUser.FamilyName
    public static int Age; //Accessible with CurrentUser.Age

    public bool initialized = false //Accessible only through object which is created using CurrentUser

}

所以现在您可以像这样从同一个 namespace 中的任何 class 访问前 3 个变量:

public class SomeRandomClass
{
    string ThisUserName = CurrentUser.Name;
    string ThisUserFamilyName = CurrentUser.FamilyName;

    CurrentUser.Age = 15;
}

静态对象可从同一名称空间内的任何 class 访问。从一个 class 更改为静态对象会影响其他 class 中的对象,因此在进行更改时要小心。

可以找到有关 Access Modifiers 的更多信息 here