2013-12-18 1 views
0

방금 ​​클래스의 정적 속성 사용에 대한 힘든 교훈을 알게되었습니다. 주로 그들이로드 된 aspx 페이지의 일부가 아닌 브라우저 세션이 아닙니다. (제게 정식 교육을받지 못해서 어디서나 저를 교정하십시오)세션 개체, 클래스 및 Intellisense에 대한 문의

나는 그때부터 세션 객체를 사용 해왔다.

세션 개체를 싫어하는 주된 이유는 인텔리 센스에서 알 수 없기 때문에 오타가 발생할 수 있기 때문입니다.

namespace.class.class.setgetproperty를 입력하기 만하면 클래스 속성에서와 같이 올바른 세션 객체를 참조하고 있다는 것을 알 수 없습니다.

클래스와 세션 객체를 함께 사용하는 방법이 있습니까? 세션 객체를 호출 할 때 인텔리 센스를 사용할 수 있습니까?

답변

2

Session 개체를 래핑하는 래퍼 클래스를 만듭니다. 궁극적으로 여전히 키/값 시스템을 사용해야합니다.

public class MySessionWrapper 
{ 
    public string MySessionProperty 
    { 
     get 
     { 
      return Session["myProperty"] == null ? null : (string) Session["myProperty"]; 
     } 
     set 
     { 
      Session.Add("myProperty", value); 
     } 
    } 
} 
+0

흥미로운 접근법. 나는 그런 생각을하지 않았을 것이다. 속성이 클래스 파일에 있고 aspx 페이지 뒤에있는 코드가 동일한 세션 객체에 액세스하는 다른 브라우저 세션에 문제가 있거나 브라우저마다 다를 것이라고 언급 한 경우? – user3071434

+0

예, 세션 개체에 여전히 액세스하고 있으므로 괜찮습니다. –

+0

지난 달 플로리다에서 열린 Visual Studio Live 360 ​​컨퍼런스에서 연설자 중 한 명을 기억합니다 ....... 나는 삼자 운영자가 있어야한다고 말하는 "AC# 닌자가되는 법"에 있다고 생각합니다. 피하십시오. 나는 이유를 상기하지 않는다. 그러나 나는 그들을 사용하고 당신의 생각이 궁금해했다? 시간과 통찰력에 감사드립니다. – user3071434

1

메소드 안에 래핑 할 수 있습니다. 예를 들어, 우리는 User 객체를 저장하고 있다고 가정합니다. 다음과 같음 :

public void SetUser(User user) 
{ 
    Session.Add("User", user); 
} 

public User GetUser() 
{ 
    User user = (User)Session["User"]; 

    return user; 
} 
+0

이것은 또한 흥미로운 접근법입니다. 답장을 보내 주셔서 감사합니다. – user3071434

0

나는 코드를 최적화했다고 생각합니다. 누군가가 문제가 될 수있는 것을 본다면 알려주십시오. 지금까지 아무 문제도 보지 못했습니다.

public Users.CurrentUser GetSetCurrentUser 
{ 
    get 
    { 
     if (Session["cUser"] == null) GetSetCurrentUser = new Users.CurrentUser(); 
     return (Users.cUser)Session["CurrentUser"]; 
    } 
    set { Session.Add("cUser", value); } 
}