实现一个下面定义的会话状态管理器(ISessionManager<,>)。 public interface ISession<TKey>
where TKey: IComparable<TKey>
{
/// <summary>
/// 会话信息主键
/// </summary>
TKey Key { get; } /// <summary>
/// 最近活动时间
/// </summary>
DateTime RecentlyActivityTime { get; set; }
} /// <summary>
/// 会话超时事件原型
/// </summary>
/// <typeparam name="TSession"></typeparam>
/// <typeparam name="TKey"></typeparam>
/// <param name="session">超时的会话</param>
public delegate void SessionTimeoutHandler<TSession, TKey>(TSession session)
where TSession : ISession<TKey> where TKey: IComparable<TKey>; /// <summary>
/// 会话管理器接口
/// </summary>
/// <typeparam name="TSession">用于存储会话状态的类型</typeparam>
/// <typeparam name="TKey">用于索引会话状态的主键类型</typeparam>
public interface ISessionManager<TSession, TKey>
: IDisposable
where TSession : ISession<TKey>
where TKey: IComparable<TKey>
{
/// <summary>
/// 当会话超时时触发
/// </summary>
event SessionTimeoutHandler<TSession, TKey> OnTimeout; /// <summary>
/// 添加会话
/// </summary>
/// <param name="session"></param>
void Add(TSession session); /// <summary>
/// 删除指定会话
/// </summary>
/// <param name="key">要删除的会话的主键</param>
/// <returns></returns>
bool Remove(TKey key); /// <summary>
/// 更新指定会话的活动时间,以防止超时
/// </summary>
/// <param name="key">要更新的会话的主键</param>
/// <returns></returns>
bool KeepAlive(TKey key); /// <summary>
/// 查找管理器中是否存在指定会话
/// </summary>
/// <param name="key">要查找的的会话的主键</param>
/// <returns></returns>
bool Contains(TKey key); /// <summary>
/// 获取或设置会话超时时间长度
/// </summary>
TimeSpan Timeout { get; set; } /// <summary>
/// 获取所有会话
/// </summary>
IEnumerable<TSession> Sessions { get; } /// <summary>
/// 获取活动会话数量
/// </summary>
int Count { get; }
}上面只是提供接口...要求实现接口
where TKey: IComparable<TKey>
{
/// <summary>
/// 会话信息主键
/// </summary>
TKey Key { get; } /// <summary>
/// 最近活动时间
/// </summary>
DateTime RecentlyActivityTime { get; set; }
} /// <summary>
/// 会话超时事件原型
/// </summary>
/// <typeparam name="TSession"></typeparam>
/// <typeparam name="TKey"></typeparam>
/// <param name="session">超时的会话</param>
public delegate void SessionTimeoutHandler<TSession, TKey>(TSession session)
where TSession : ISession<TKey> where TKey: IComparable<TKey>; /// <summary>
/// 会话管理器接口
/// </summary>
/// <typeparam name="TSession">用于存储会话状态的类型</typeparam>
/// <typeparam name="TKey">用于索引会话状态的主键类型</typeparam>
public interface ISessionManager<TSession, TKey>
: IDisposable
where TSession : ISession<TKey>
where TKey: IComparable<TKey>
{
/// <summary>
/// 当会话超时时触发
/// </summary>
event SessionTimeoutHandler<TSession, TKey> OnTimeout; /// <summary>
/// 添加会话
/// </summary>
/// <param name="session"></param>
void Add(TSession session); /// <summary>
/// 删除指定会话
/// </summary>
/// <param name="key">要删除的会话的主键</param>
/// <returns></returns>
bool Remove(TKey key); /// <summary>
/// 更新指定会话的活动时间,以防止超时
/// </summary>
/// <param name="key">要更新的会话的主键</param>
/// <returns></returns>
bool KeepAlive(TKey key); /// <summary>
/// 查找管理器中是否存在指定会话
/// </summary>
/// <param name="key">要查找的的会话的主键</param>
/// <returns></returns>
bool Contains(TKey key); /// <summary>
/// 获取或设置会话超时时间长度
/// </summary>
TimeSpan Timeout { get; set; } /// <summary>
/// 获取所有会话
/// </summary>
IEnumerable<TSession> Sessions { get; } /// <summary>
/// 获取活动会话数量
/// </summary>
int Count { get; }
}上面只是提供接口...要求实现接口
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货