В моем приложении мне нужно прочитать некоторую информацию о пользователе, который вошел в систему из базы данных, поэтому я создаю класс кэша для сохранения информации, это код:
public class UserManager
{
private static object lockThis = new object();
private static dao dao = new dao();
private static Dictionary<string, User> user_map = new Dictionary<string, User>();
public static void loadUserInfo(string user_name)
{
lock (lockThis)
{
unLoadUserInfo(user_name);
string sql = "select * from sys_user where u_name='" + user_name + "'";
DataTable dt = dao.executeSql(sql);
if (dt.Rows.Count == 1)
{
DataRow dr = dt.Rows[0];
User uw = new User();
uw.user_id = dr["userid"].ToString();
uw.user_name = dr["u_name"].ToString();
user_map.Add(user_name, uw);
}
}
}
public static User getUserInfo(string user_name)
{
if (!user_map.ContainsKey(user_name))
loadUserInfo(user_name);
return user_map[user_name];
}
public static void unLoadUserInfo(string user_name)
{
if (user_map.ContainsKey(user_name))
user_map.Remove(user_name);
}
}
При входе пользователя я вызываю это:
UserManager.loadUserInfo(Context.Identify.User.name);
Однако здесь выдается два исключения:
1) UserManager initialized failed....
2) the null pointer exception.(the user_map ==null).
Интересно, почему? user_map является статическим файлом, его сначала нужно инициализировать.
В чем проблема?