您还可以使用泛型重构类型化数据检索,例如使用扩展方法,如下所示:
public static class MyExtensions
{
public static T GetTypedVal<T>(this HttpSessionState session, string key)
{
var value = session[key];
if (value != null)
{
if (value is T)
{
return (T)value;
}
}
throw new InvalidOperationException(
string.Format("Key {0} is not found in SessionState", key));
}
}
然后您可以将其用于引用和值类型,如下所示:
Session["Value"] = 5;
var valResult = Session.GetTypedVal<int>("Value");
Session["Object"] = new SomeClass() { Name = "SomeName" };
var objResult = Session.GetTypedVal<SomeClass>("Object");