2011-07-18 41 views
6

HttpSessionState dường như là một bộ sưu tập khóa -> giá trị điển hình, vậy tại sao nó không triển khai IDictionary -Mục tiêu?Tại sao HttpSessionState không triển khai IDictionary?

Bối cảnh: Tôi đang cố gắng xuất/lưu bối cảnh của trang web ASP.NET khi xảy ra lỗi và muốn thực hiện điều này bằng chức năng đệ quy, kết quả là Tập hợp và tất cả chứa Bộ sưu tập. Bởi vì HttpSessionState chỉ thực hiện ICollectionIEnumerable, tôi đang mất thông tin về các khóa nếu tôi muốn thực hiện theo cách chung chung (= làm việc với giao diện).

Trả lời

7

IDictionary ngụ ý rằng việc thu mục tiêu có khả năng tra cứu nhanh bằng phím. (Theo như tôi biết) HttpSessionState chỉ là một danh sách các mục, không phải là một cấu trúc kiểu từ điển. Khi tìm kiếm cấu trúc đó sẽ mất thời gian tuyến tính thì không có lý do gì để coi nó như một từ điển. Nếu bạn cần nhiều tra cứu nhanh thì sao chép các khóa và giá trị vào một từ điển thực. Nếu bạn không cần tra cứu nhanh, thì bạn sẽ chỉ cần chuyên về lớp đó.

Có nhiều thứ hơn với giao diện hơn là danh sách các nguyên mẫu phương thức. Có ngữ nghĩa cần phải được bảo quản cho một giao diện. Tra cứu nhanh bằng khóa là một giả định không rõ ràng cho (hầu hết) người tiêu dùng của bất kỳ IDictionary nào.

-1

Chỉ cần lặp qua các Session Keys và tham khảo giá trị như vậy:

Session[key] 
+0

Xin cảm ơn câu trả lời. Nó không trả lời câu hỏi của tôi, mặc dù. Tôi vẫn không thể viết một chức năng chung cho đầu ra sau đó, mà làm việc cho các trường hợp/bộ sưu tập khác quá. Tôi sẽ phải chuyển sang HttpSessionState để thực hiện công việc này. – magnattic

+0

Và nó vẫn không giải thích tại sao nhóm .NET chọn không sử dụng giao diện ở đây. Tôi tò mò. ;) – magnattic

2

Làm thế nào để viết trình bao bọc IDictionary-implement của riêng bạn có một đối tượng HttpSessionState trong hàm khởi tạo của nó và hoạt động như bạn muốn? Tôi giả sử bạn muốn làm điều này để bạn có thể hoán đổi các loại giá trị tên (IDictionary-implement) khác.

Tất nhiên, như Billy đã chỉ ra, đây là một cách tuyệt vời để mặc một bộ từ điển psuedo hoạt động kém trong quần áo từ điển!

Các vấn đề liên quan