2011-07-18 18 views
6

HttpSessionState tipik bir anahtar -> değer koleksiyonu gibi görünüyor, bu nedenle neden IDictionary-Arabirim uygulamıyor?HttpSessionState neden IDictionary uygulamıyor?

Arka plan: Bir hata oluştuğunda ve bunu bir Koleksiyon ve tüm içeren Koleksiyonlar çıkaran bir yinelemeli işlevle yapmak istediğimde, ASP.NET Web Sitesi İçeriği çıktı/kaydetmeye çalışıyorum. HttpSessionState yalnızca ICollection ve IEnumerable'u uyguladığından, bunu genel bir biçimde yapmak istiyorsanız (= arabirimlerle çalışmak) anahtarlar hakkındaki bilgileri kaybediyorum. şöyle Session Keys ve referans değerleri ile

cevap

7

IDictionary hedef toplama tuşu ile hızlı aramalar yeteneğine sahip olduğunu ima eder. (Bildiğim kadarıyla) HttpSessionState yalnızca bir sözlük stili yapısı değil, öğelerin bir listesidir. Bu yapının bir araştırması lineer zaman alacağından, onu sözlük olarak ele almak için bir neden yoktur. Çok sayıda hızlı aramaya ihtiyacınız varsa, anahtarları ve değerleri gerçek bir sözlüğe kopyalayın. Hızlı aramalara ihtiyacınız yoksa, o zaman sadece bu sınıf için uzmanlaşmanız gerekir.

Bir arabirim için, yalnızca bir yöntem prototipleri listesinden daha çok şey vardır. Bir arayüz için korunmaları gereken semantikler de vardır. Anahtar yoluyla yapılan hızlı aramalar, herhangi bir IDictionary ürününün (çoğu) tüketicisi için açık olmayan bir varsayımdır.

-1

Hemen döngü:

Session[key] 
+0

Hey, cevabınız için teşekkürler. Yine de soruma cevap vermiyor. Yine de çıktı için genel bir işlev yazamadım, bu da diğer durumlar/koleksiyonlar için de geçerli. Bu işi yapmak için HttpSessionState'e gitmem gerekecekti. – magnattic

+0

Ve yine de .NET ekibinin bu arabirimi neden kullanmamayı seçtiğini açıklamıyor. Merak ediyorum. ;) – magnattic

2

Kurucunuza bir HttpSessionState nesnesi alan ve istediğiniz gibi davranan kendi IDictionary uygulamalı sarıcınızı yazmaya ne dersiniz? Bunu yapmak istediğinizi varsayardım, böylece diğer türden isim değeri (IDictionary-uygulamalı) oturum uygulamalarını değiştirebilirsin.

Elbette, Billy'nin işaret ettiği gibi, bu sözlük kıyafetlerinde kötü performans gösteren bir psuedo-sözlüğünü giymenin harika bir yoludur!

İlgili konular