using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication28
{
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
IToken token = new ShiXianInterface("aa"+i, "a1");
SO.Current.Store.SaveIdentity(token);
}
Console.WriteLine(SO.Current.Store.LoadIdentity("aa2").Identity);
}
}
interface IToken
{
/// <summary>
/// GET token key
/// </summary>
string Key
{
get;
}
/// <summary>
/// GET user identity
/// </summary>
string Identity
{
get;
}
/// <summary>
/// GET is expired
/// </summary>
bool Expired
{
get;
}
/// <summary>
/// GET token add time
/// </summary>
DateTime RegistryTime
{
get;
}
}
class ShiXianInterface : IToken
{
private string _Key;
private string _Identity;
private bool _Expired;
private DateTime _RegistryTime = DateTime.Now;
public ShiXianInterface(string Key,string Identity)
{
this._Key = Key;
this._Identity = Identity;
}
#region IToken 成员
public string Key
{
get { return _Key; }
}
public string Identity
{
get { return _Identity; }
}
public bool Expired
{
get { return _Expired; }
}
public DateTime RegistryTime
{
get { return _RegistryTime; }
}
#endregion
}
interface ISingleSignOnStore
{
/// save token to store
/// </summary>
/// <param name="token">token</param>
void SaveIdentity(IToken token);
/// <summary>
/// load token from store
/// </summary>
/// <param name="key"></param>
IToken LoadIdentity(string key);
/// <summary>
/// Delete specified token
/// </summary>
/// <param name="key"></param>
void RemoveIdentity(string key);
/// <summary>
/// clean up expired tokens
/// </summary>
void RemoveExpiredTokens();
}
class ShiXianISingJieKou : ISingleSignOnStore
{
Lists list;
public ShiXianISingJieKou()
{
list = new Lists();
}
//private static ShiXianISingJieKou _Current = new ShiXianISingJieKou();
//public static ShiXianISingJieKou Current
//{
// get
// {
// if (_Current == null)
// {
// _Current = new ShiXianISingJieKou();
// }
// return _Current;
// }
//}
#region ISingleSignOnStore 成员
public void SaveIdentity(IToken token)
{
if (list.Contains(token.Key))
{
this.RemoveIdentity(token.Key);
}
list.Add(token);
}
public IToken LoadIdentity(string key)
{
return list[key];
}
public void RemoveIdentity(string key)
{
list.Remove(key) ;
}
public void RemoveExpiredTokens()
{
for (int i = 0; i < list.Count; i++)
{
try
{
IToken token = list[i];
if (token.Expired)
{
list.Remove(token);
}
}
catch
{
}
}
}
#endregion
}
class SO
{
private static SO _Current = new SO();
public static SO Current
{
get
{
if (_Current == null)
{
_Current = new SO();
}
return _Current;
}
}
private ISingleSignOnStore _Store;
private SO()
{
}
public ISingleSignOnStore Store
{
get
{
if (_Store == null)
{
_Store = new ShiXianISingJieKou();
}
return _Store;
}
}
}
class Lists : System.Collections.ObjectModel.KeyedCollection<string, IToken>
{
protected override string GetKeyForItem(IToken item)
{
return item.Key;
}
public new IToken this[string key]
{
get
{
return base[key];
}
}
public new IToken this[int index]
{
get
{
return base[index];
}
}
public void AddRange(IToken[] items)
{
foreach (IToken token in items)
{
this.Add(token);
}
}
}
}
面向对象
最新推荐文章于 2025-09-06 08:16:31 发布
1万+

被折叠的 条评论
为什么被折叠?



