C# C语言中的全局变量#
也许有人能帮我解决数据库应用程序中的一个小问题 当用户使用用户名和密码登录到我的数据库时,我希望将用户名作为一个整体(所有表单等)存储并可被应用程序访问,以便执行的每一个操作都携带用户签名 我认为代码可能如下所示:C# C语言中的全局变量#,c#,C#,也许有人能帮我解决数据库应用程序中的一个小问题 当用户使用用户名和密码登录到我的数据库时,我希望将用户名作为一个整体(所有表单等)存储并可被应用程序访问,以便执行的每一个操作都携带用户签名 我认为代码可能如下所示: namespace YourNamespaceName { class Variables { public static string strUser = "user name"; } } 我可以用Variables.strUser回忆起来
namespace YourNamespaceName
{
class Variables
{
public static string strUser = "user name";
}
}
我可以用Variables.strUser回忆起来
但是,我不想将用户名的值硬编码到我的应用程序中。相反,我需要在运行时根据初始登录过程对其进行评估,并在应用程序运行期间保留用户名以供参考
感谢大家期待您的帮助。如果您的应用程序保持会话状态,那么最好的解决方案是让变量在会话中活动,并从会话范围的变量访问它。您可以创建某种“用户”类来存储用户信息,如用户名、密码、电子邮件等 您可以将该类实现为单例,并在用户首次登录时创建它 然后,无论何时需要用户信息,都可以使用“user”singleton类
namespace YourNamespaceName
{
public static class Variables
{
private static string strUser;
public static string User {
get { return strUser; }
set { strUser = value; }
}
}
}
您没有指定框架版本,但此代码适用于.NET2.0。使用:
Variables.User = "User name";
对于用户身份,应使用
IIdentity
界面。您可以从GenericEntity
开始
有关详细信息,请参见。您可以拥有如下所示的用户类,这样可以确保应用程序中只有一个用户实例。有关用法的详细信息,请参见实例属性和测试存根。如果愿意,您可以向该类添加更多属性
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
}
}
这是一个变量——只需分配适合它的变量即可。如:YourNamespaceName.Variables.strUser=“Jimmy”;我不认为它是asp.net,它是win forms。是的,它是win forms应用程序-我不知道你所说的会话状态或会话范围变量是什么意思:sMy bad session指事务的持续时间,因此如果你保持会话状态(例如,与数据库连接的持续时间可以是你的会话)您将维护一个仅在会话期间有效的变量集合,在会话无效时清除这些变量。但这可能超出了你需要的范围,所以我会在其他答案中使用其他建议。