This framework includes trace, status line, logging, threaded messaging (both user interface and functions,) console, disk and database file I/O, error handling, start/pause/cancel, progress bar and other features.
using System;
using System.Collections.Generic;
using System.Text;
namespace Example
{
public class LazyList: IList
{
private List _innerList;
private IEnumerable _lazyLoader;
private void ensureList()
{
if(_innerList == null)
_innerList = new List(_lazyLoader);
}
#region IList Members
public int IndexOf(T item)
{
ensureList();
ensureList();
return _innerList.IndexOf(item);
}
public void Insert(int index, T item)
{
ensureList();
_innerList.Insert(index, item);
}
public void RemoveAt(int index)
{
ensureList();
_innerList.RemoveAt(index);
}
public T this[int index]
{
get
{
ensureList();
return _innerList[index];
}
set
{
ensureList();
_innerList[index] = value;
}
}
#endregion
#region ICollection Members
public void Add(T item)
{
ensureList();
_innerList.Add(item);
}
public void Clear()
{
ensureList();
_innerList.Clear();
}
public bool Contains(T item)
{
ensureList();
return _innerList.Contains(item);
}
public void CopyTo(T[] array, int arrayIndex)
{
ensureList();
_innerList.CopyTo(array, arrayIndex);
}
public int Count
{
get { ensureList(); return _innerList.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
public bool Remove(T item)
{
ensureList();
return _innerList.Remove(item);
}
#endregion
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
ensureList();
return _innerList.GetEnumerator();
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
ensureList();
return _innerList.GetEnumerator();
}
#endregion
}
}
The pre-existing design additionally includes secure user sign-on, company control, smart file locking and metrics, hardware usage configuration, scheduled tasks with input, minor accounting controls, resource management and other features. These features were placed in a later phase pending the finalized design of the first set which were more closely tied to the .Net IDE framework.
There is first the expectation that a consistent UI will
be developed regardless.
Second, an application specific design is expected to handle
issues like exceptions and cross thread communications.
Finally, there are many feautures so pervasive that
integration is reasonable.