我为会话分配了一个自定义类的对象,如:
Services Obj = getServiceDetails(3); //getting all data of Service where Id = 3
Session["ServiceObj"] = Obj;
现在我想将它的值赋给同一个类的模型类中的另一个对象。我不知道怎么做。
我试过了,但这不是有效的方式。:
Services oldObj = <Services>Session["ServiceObj"];
请帮助我。我不知道怎么做。
答案 0 :(得分:7)
正确的类型转换需要圆括号:
Services oldObj = (Services)Session["ServiceObj"];
答案 1 :(得分:2)
你应该使用Services oldObj = (Services)Session["ServiceObj"];
而不是Services oldObj = <Services>Session["ServiceObj"];
答案 2 :(得分:1)
not <Services> use (Services) for casting
答案 3 :(得分:1)
像你一样把它投射到
Services obj = (Services)Session["ServiceObj"];
答案 4 :(得分:1)
您还可以使用通用的方法重构类型化数据检索,例如:使用扩展方法,如下所示:
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");
答案 5 :(得分:0)
要从会议中获取价值,您应该抛弃它。
Services oldObj = (Service)Session["ServiceObj"];