![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
[Serializable]
public class LazyLoadList<T> : IList<T>, System.Collections.IList,ISetLoadInfo
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private IList<T> mItems = null;
protected IList<T> Items
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (mItems == null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
LoadData();
}
return mItems;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void LoadData()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if (Driver == null)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
mItems = new List<T>();
return;
}
using (HFSoft.Data.IDataSession session =
HFSoft.Data.MappingContainer.ConfigContainer.OpenSession(Driver, ConnectionString))
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
session.Open();
IQuery query = Relation.GetRightQuery(session,Expression);
mItems = query.List<T>();
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
IList 成员#region IList<T> 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int IList<T>.IndexOf(T item)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.IndexOf(item);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void IList<T>.Insert(int index, T item)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Insert(index, item);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void IList<T>.RemoveAt(int index)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.RemoveAt(index);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
T IList<T>.this[int index]
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items[index];
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items[index] = value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
ICollection 成员#region ICollection<T> 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void ICollection<T>.Add(T item)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Add(item);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void ICollection<T>.Clear()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Clear();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool ICollection<T>.Contains(T item)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.Contains(item);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void ICollection<T>.CopyTo(T[] array, int arrayIndex)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.CopyTo(array, arrayIndex);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int ICollection<T>.Count
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return Items.Count; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool ICollection<T>.IsReadOnly
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ((ICollection<T>)Items).IsReadOnly; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool ICollection<T>.Remove(T item)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.Remove(item);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
IEnumerable 成员#region IEnumerable<T> 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
IEnumerator<T> IEnumerable<T>.GetEnumerator()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.GetEnumerator();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
IEnumerable 成员#region IEnumerable 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.GetEnumerator();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
IList 成员#region IList 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int System.Collections.IList.Add(object value)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return ((IList)Items).Add((T)value);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void System.Collections.IList.Clear()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Clear();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool System.Collections.IList.Contains(object value)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.Contains((T)value);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int System.Collections.IList.IndexOf(object value)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items.IndexOf((T)value);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void System.Collections.IList.Insert(int index, object value)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Insert(index, (T)value);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool System.Collections.IList.IsFixedSize
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ((IList)Items).IsFixedSize; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool System.Collections.IList.IsReadOnly
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ((IList)Items).IsReadOnly; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void System.Collections.IList.Remove(object value)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.Remove((T)value);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void System.Collections.IList.RemoveAt(int index)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items.RemoveAt(index);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
object System.Collections.IList.this[int index]
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
get
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return Items[index];
}
set
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Items[index] = (T)value;
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
ICollection 成员#region ICollection 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void System.Collections.ICollection.CopyTo(Array array, int index)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
((IList)Items).CopyTo(array, index);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int System.Collections.ICollection.Count
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return Items.Count; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bool System.Collections.ICollection.IsSynchronized
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ((IList)Items).IsSynchronized; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
object System.Collections.ICollection.SyncRoot
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ((IList)Items).SyncRoot; }
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
[NonSerialized]
internal HFSoft.Data.IDriver Driver;
[NonSerialized]
internal string ConnectionString;
[NonSerialized]
internal HFSoft.Data.Expressions.Expression Expression;
[NonSerialized]
internal RelationAttribute Relation;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
ISetLoadInfo 成员#region ISetLoadInfo 成员
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
void ISetLoadInfo.SetInfo(HFSoft.Data.IDriver driver, string connstring, HFSoft.Data.Expressions.Expression expression, RelationAttribute relation)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Driver = driver;
ConnectionString = connstring;
Expression = expression;
Relation = relation;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
#endregion
}
interface ISetLoadInfo
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
void SetInfo(HFSoft.Data.IDriver driver, string connstring, HFSoft.Data.Expressions.Expression expression,RelationAttribute relation);
}