C#中的全局变量

时间:2012-01-01 21:43:14

标签: c#

有人可能会帮我解决我在数据库应用程序上遇到的一个小问题。

当用户使用用户名和密码登录我的数据库时,我希望应用程序作为一个整体(所有表单等)存储和访问用户名,以便所执行的每个操作都带有用户签名,因为它是

我认为代码可能类似于以下内容:

namespace YourNamespaceName
{
    class Variables
    {
        public static string strUser = "user name";
    }
}

我可以回忆一下Variables.strUser

但是我不想将用户名的值硬编码到我的应用程序中。相反,我需要在运行时根据初始登录过程对其进行评估,并在应用程序运行期间保留用户名作为参考。

感谢你们所有人的期待。

5 个答案:

答案 0 :(得分:4)

namespace YourNamespaceName
{
    public static class Variables
    {
        private static string strUser;


        public static string User {
           get { return strUser; }
           set { strUser = value; }
        }
    }
}

您没有指定框架版本,但此代码适用于.NET 2.0。使用:

Variables.User = "User name";

答案 1 :(得分:1)

您可以拥有如下所示的用户类,这可确保应用程序中只有一个用户实例,请参阅Instance属性和测试存根以获取用法详细信息,如果您愿意,可以向该类添加更多属性。

    using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;

        namespace yournamespace
        {
          public class User
          {
           private static User u;
           public string Username
           { get { return _username; } }

           private string _username;
           protected User(){}

          public void SetUserInformation(string uname)
          {

           _username = uname;

          }

         public static User Instance
         {
          get{
           if(u==null)
             u=new User();
           return u;
          }
        }

#if(TEST_USER)
    public static void Main(string[] args)
    {
      User u = User.Instance;
      u.SetUserInformation("testuser");
      User u1 = User.Instance;
    }
#endif
  }
}

答案 2 :(得分:0)

如果您的应用程序维护会话状态,那么您的最佳解决方案是让变量存在于会话中并从会话范围变量访问它

答案 3 :(得分:0)

您可以创建某种“用户”类来存储用户信息,例如用户名,密码,电子邮件等......

您可以将此类实现为单例,并在用户首次登录时创建它。

然后,只要您需要用户信息,就可以使用“用户”单例类。

答案 4 :(得分:0)

对于用户身份,您应该使用IIdentity界面。您可以从GenericIdentiry开始。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/y9dd5fx0.aspx