tags:

views:

26

answers:

0

Can you suggest any further improvements that can be made with .net 4.0 in mind?

public class LazyList<T> : IList<T>
{
    public LazyList() 
    {
        myLazyList = new Lazy<IList<T>>(() =>
        {
            return new List<T>();
        });
    }

    public LazyList(IQueryable<T> query)
    {
        myLazyList = new Lazy<IList<T>>(() =>
        {
            return query.ToList();
        });
    }

    Lazy<IList<T>> myLazyList;

    public IEnumerator<T> GetEnumerator()
    {
        return myLazyList.Value.GetEnumerator();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return myLazyList.Value.GetEnumerator();
    }

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

    public void Insert(int index, T item)
    {
        myLazyList.Value.Insert(index, item);
    }

    public void RemoveAt(int index)
    {
        myLazyList.Value.RemoveAt(index);
    }

    public T this[int index]
    {
        get
        {
            return myLazyList.Value[index];
        }
        set
        {
            myLazyList.Value[index] = value;
        }
    }

    public void Add(T item)
    {
        myLazyList.Value.Add(item);
    }

    public void Clear()
    {
        myLazyList.Value.Clear();
    }

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

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

    public int Count
    {
        get { return myLazyList.Value.Count; }
    }

    public bool IsReadOnly
    {
        get { return myLazyList.Value.IsReadOnly; }
    }

    public bool Remove(T item)
    {
        return myLazyList.Value.Remove(item);
    }

    public IList<T> Inner
    {
        get { return myLazyList.Value; }
    }
}