2013-05-29 69 views
1

我已經指派會話的自定義類的對象,如:如何在類對象中獲取Session的值?

Services Obj = getServiceDetails(3); //getting all data of Service where Id = 3 
Session["ServiceObj"] = Obj; 

現在,我想分配模型中的類其值設置爲同一類的其他對象。我不知道該怎麼做。

我試過,但它不是有效的辦法:

Services oldObj = <Services>Session["ServiceObj"]; 

請幫助我。我不知道該怎麼做。

+1

'服務oldObj =(服務)會話[ 「ServiceObj」];' – Igor

+0

謝謝@Igor,它正在工作。 – Dhwani

+0

@Igor,如果你將你的評論發佈爲答案,那就太好了。所以我可以接受它。 – Dhwani

回答

6

正確的類型轉換需要圓括弧:

Services oldObj = (Services)Session["ServiceObj"]; 
+0

+1,因爲你是第一個評論:) – Sachin

+0

+1你已經回答第一個評論。 – RajeshKdev

2

你應該使用Services oldObj = (Services)Session["ServiceObj"];

,而不是Services oldObj = <Services>Session["ServiceObj"];

1
not <Services> use (Services) for casting 
1

投它與你的類像這樣

Services obj = (Services)Session["ServiceObj"]; 
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"); 
+1

感謝分享知識... + 1 :) – Dhwani