Đây là phiên bản của giải pháp cho sự cố này. Chú ý rằng tôi cũng sử dụng một dependency injection là tốt, sự khác biệt lớn duy nhất là "phiên" đối tượng được truy cập ném một Singleton
private iSession _Session;
private iSession InternalSession
{
get
{
if (_Session == null)
{
_Session = new SessionDecorator(this.Session);
}
return _Session;
}
}
Đây là lớp SessionDecorator, trong đó sử dụng một mô hình trang trí quấn phiên quanh một giao diện:
public class SessionDecorator : iSession
{
private HttpSessionStateBase _Session;
private const string SESSIONKEY1= "SESSIONKEY1";
private const string SESSIONKEY2= "SESSIONKEY2";
public SessionDecorator(HttpSessionStateBase session)
{
_Session = session;
}
int iSession.AValue
{
get
{
return _Session[SESSIONKEY1] == null ? 1 : Convert.ToInt32(_Session[SESSIONKEY1]);
}
set
{
_Session[SESSIONKEY1] = value;
}
}
int iSession.AnotherValue
{
get
{
return _Session[SESSIONKEY2] == null ? 0 : Convert.ToInt32(_Session[SESSIONKEY2]);
}
set
{
_Session[SESSIONKEY2] = value;
}
}
}`
Hope this helps :)
Cảm ơn bạn đã trả lời. Có vẻ như có một vài khung công tác Dependency Injection. Bạn đề xuất khung DI nào? Có phải đọc các bài viết về DI không? :) – xraminx
điều này có vẻ quá phức tạp đối với những gì mà áp phích gốc đã yêu cầu. –
@xraminx - đừng nhầm lẫn giữa những gì tôi đề xuất với khung DI. Tôi đang nói về việc sử dụng DI, mô hình, không phải là một khuôn khổ. Ý tưởng là bạn chuyển một thể hiện của sự phụ thuộc vào lớp chứ không phải là nó tạo ra một hoặc sử dụng một cá thể tĩnh. Dễ dàng hơn nhiều để kiểm tra đơn vị thông qua chế nhạo. – tvanfosson