静态成员的不一致行为
本文关键字:不一致 静态成员 | 更新日期: 2023-09-27 18:29:40
我在一个解决方案中有两个项目。一个C#类库项目封装了逻辑和一个用于查看的asp.net网站。逻辑如下:
public static class LoginHandler
{
private static string _connectionString = Data Source=.;Initial Catalog=ASP;Integrated Security=True"
private static SqlConnection Connection;
static LoginHandler()
{
Connection = new SqlConnection(ConnectionString);
}
public static User StudentLogin(string username, string password)
{
using (Connection)
{
.........
}
}
}
一切都很顺利,直到我第二次调用StudentLogin方法。
我得到一个InvalidOperationException说Connection的ConnectionString属性未初始化。(通过监视窗口ConnectionString为")
我的问题是,由于静态成员只初始化一次(本例中为静态构造函数),ConnectionString属性如何更改?
或者,调用IDisposible.Dispose()的using语句会受到指责吗?
或者,调用IDisposible.Dispose()的using语句会受到指责吗?
是的。每次调用StudentLogin
方法时,都应该创建一个新的连接。你甚至不需要静态字段来保持对它的引用
public static User StudentLogin(string username, string password)
{
using (var connection = new SqlConnection(ConnectionString))
{
}
}