SessionStateItemCollection class
一个被存储在session State中的对象集.这个类不能被继承.
SessionStateItemCollection 类是使用来管理session-state变量值的索引,这个索引是按照变量名或index.这个session-state变量被APS.NET应用程序使用在HttpSessionState 类,如要访问就使用HttpContext或Page的Session属性,这个HttpSessionState类调用HttpSessionStateContainer 类来管理被SessionStateItemCollection使用的session-state变量值.
注意实现:
当创建一个自定义session-state提供者基类SesssionStateStoreProviderBase类时,使用SessionStateItemCollection类管理每一项被存储session-state变量值,如果你需要创建自定义对象管理sessio-state items,就要实现ISessionStateItemCollection interface.
下面是创建一个新的SessionStateItemCollection 对象和使用set和get得到变量值.
SessionStateItemCollection items = new SessionStateItemCollection();
![](/Images/OutliningIndicators/None.gif)
items["LastName"] = "Wilson";
items["FirstName"] = "Dan";
![](/Images/OutliningIndicators/None.gif)
foreach (string s in items.Keys)
Response.Write("items[\"" + s + "\"] = " + items[s].ToString() + "<br />");
上面说到如果要自定义就要实现下面这个东东
ISessionStateItemCollection Interface
为ASP.NET session state使用集合去管理session定义契约.
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public interface ISessionStateItemCollection : ICollection,
IEnumerable
ISessionStateItemCollection interface 定义session items 的collection暴露给应用程序代码HttpSessionStateContainer Class.
这个ASP.NET实现ISessionStateItemCollection interface 的类是SessionStateItemCollection class.
如果 你创建一个类派生SessionStateStoreProviderBase 类去存储Session数据,你既能使用SessionStateItemCollection class去管理存储对象也可以自己实现ISessionStateItemCollection interface来管理.
如果你实现了ISessionStateItemCollection interface,你必须创建一个类继承SessionStateStoreProviderBase 为产生你的ISessionStateItemCollection 实现管理session变量而使用.
一个ISessionStateItemCollection实现必须实现ICollection interface的成员.
下面是实现ISessionStateItemCollection使用SortedList类来存储session-State变量名和值.
using System;
using System.Web;
using System.Web.SessionState;
using System.Collections;
using System.Collections.Specialized;
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
namespace Samples.AspNet.Session
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
![](/Images/OutliningIndicators/InBlock.gif)
public class MySessionStateItemCollection : ISessionStateItemCollection
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
private SortedList pItems = new SortedList();
private bool pDirty = false;
![](/Images/OutliningIndicators/InBlock.gif)
public bool Dirty
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return pDirty; }
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ pDirty = value; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public object this[int index]
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return pItems[index]; }
set
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
pItems[index] = value;
pDirty = true;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
public object this[string name]
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return pItems[name]; }
set
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
pItems[name] = value;
pDirty = true;
}
}
![](/Images/OutliningIndicators/InBlock.gif)
public NameObjectCollectionBase.KeysCollection Keys
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return (NameObjectCollectionBase.KeysCollection)pItems.Keys; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public int Count
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return pItems.Count; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public Object SyncRoot
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return this; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public bool IsSynchronized
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return false; }
}
![](/Images/OutliningIndicators/InBlock.gif)
public IEnumerator GetEnumerator()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return pItems.GetEnumerator();
}
![](/Images/OutliningIndicators/InBlock.gif)
public void Clear()
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
pItems.Clear();
pDirty = true;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void Remove(string name)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
pItems.Remove(name);
pDirty = true;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void RemoveAt(int index)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (index < 0 || index >= this.Count)
throw new ArgumentOutOfRangeException("The specified index is not within the acceptable range.");
![](/Images/OutliningIndicators/InBlock.gif)
pItems.RemoveAt(index);
pDirty = true;
}
![](/Images/OutliningIndicators/InBlock.gif)
public void CopyTo(Array array, int index)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
pItems.CopyTo(array, index);
}
![](/Images/OutliningIndicators/InBlock.gif)
}
![](/Images/OutliningIndicators/InBlock.gif)
}
相关类的信息
Wokrs guo