• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

来一碗茶楼

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

一个范型使用例子

废话少说,用于Warp设计模式


  interface IWarpable<T>
    
{
        T OriginalObject 
{ get;set;}
    }


    
class WarpList<T, W> : IList<T> where T : IWarpable<W>
    
{
        
private IList<W> FWrapList = null;
        
private IList<T> FInternalList = null;

        
public WarpList(IList<W> aObject)
        
{
            FWrapList 
= aObject;
        }


        
IList Members#region IList<T> Members

        
public int IndexOf(T item)
        
{
            
return FInternalList.IndexOf(item);
        }


        
public void Insert(int index, T item)
        
{
            FInternalList.Insert(index, item);
            FWrapList.Insert(index, item.OriginalObject);

        }


        
public void RemoveAt(int index)
        
{
            FInternalList.RemoveAt(index);
            FWrapList.RemoveAt(index);
        }


        
public T this[int index]
        
{
            
get { return FInternalList[index]; }
            
set
            
{
                FInternalList[index] 
= value;
                FWrapList[index] 
= FInternalList[index].OriginalObject;
            }

        }


        
#endregion


        
ICollection Members#region ICollection<T> Members

        
public void Add(T item)
        
{
            FInternalList.Add(item);
            FWrapList.Add(item.OriginalObject);
        }


        
public void Clear()
        
{
            FInternalList.Clear();
            FWrapList.Clear();
        }


        
public bool Contains(T item)
        
{
            
return FInternalList.Contains(item);
        }


        
public void CopyTo(T[] array, int arrayIndex)
        
{
           FInternalList.CopyTo(array,arrayIndex);
        }


        
public bool Remove(T item)
        
{
            FInternalList.Remove(item);
            
return FWrapList.Remove(item.OriginalObject);
        }


        
public int Count
        
{
            
get { return FInternalList.Count; }
        }


        
public bool IsReadOnly
        
{
            
get { return FInternalList.IsReadOnly; }
        }


        
#endregion


        
IEnumerable Members#region IEnumerable<T> Members

        IEnumerator
<T> IEnumerable<T>.GetEnumerator()
        
{
            
return FInternalList.GetEnumerator();
        }


        
#endregion


        
IEnumerable Members#region IEnumerable Members

        
public IEnumerator GetEnumerator()
        
{
            
return FInternalList.GetEnumerator();
        }


        
#endregion

posted on 2007-02-28 14:29  大吃一碗  阅读(364)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3