Nov*_*ice 2 asp.net type-safety
当我开始开发Web应用程序时,我将用户的身份验证详细信息存储在两个会话变量中
Session["UserName"]="username";
Session["Password"]="paswword-123";
Run Code Online (Sandbox Code Playgroud)
但有人建议我创建一个包含UserName和Password属性的类,并且在成功身份验证时,我被要求创建该类的实例并设置UserName和Password属性并将该实例存储在会话中.
我被告知会话对象是TypeSafe.有人可以解释什么是类型安全编码以及在会话中存储对象的优势.
基本上,直接存储值的经典方法Session["something"]有两个缺点:
something,您的代码编译得很好但是您会遇到运行时错误,或者更糟糕的是,您的代码中会出现一个未被注意的错误.Session["something"],您需要将其转换为您需要的类型.(这就是"非类型安全"的含义.)使用存储在Session中的强类型对象消除了第二个问题.实际上,你的自定义对象仍然需要被强制转换,但它只有一个强制转换而不是两个(或十个)强制转换,这可以减少出错的可能性.同样,错误的强制转换是仅在运行时检测到的.
另一种方法是在静态属性中封装对Session变量的访问:
public class MySession {
public static string UserName {
get { return (string)HttpContext.Current.Session["UserName"]; }
set { HttpContext.Current.Session["UserName"] = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这两种方法都可以组合在一起,允许您将相关属性(UserName和Password)分组到一个公共对象中.
| 归档时间: |
|
| 查看次数: |
490 次 |
| 最近记录: |