forked from ThatRendle/Simple.Data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimpleList.cs
More file actions
139 lines (113 loc) · 3.24 KB
/
SimpleList.cs
File metadata and controls
139 lines (113 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;
using Simple.Data.Extensions;
using System.Collections;
namespace Simple.Data
{
public class SimpleList : DynamicObject, IList<object>
{
private readonly List<object> _innerList;
public object this[int index]
{
get { return _innerList[index]; }
set { _innerList[index] = value; }
}
public int Count
{
get { return _innerList.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
public SimpleList(IEnumerable<object> other)
{
_innerList = new List<object>(other);
}
public void Add(object item)
{
_innerList.Add(item);
}
public void Clear()
{
_innerList.Clear();
}
public bool Contains(object item)
{
return _innerList.Contains(item);
}
public void CopyTo(object[] array, int arrayIndex)
{
_innerList.CopyTo(array, arrayIndex);
}
public int IndexOf(object item)
{
return _innerList.IndexOf(item);
}
public void Insert(int index, object item)
{
_innerList.Insert(index, item);
}
public void RemoveAt(int index)
{
_innerList.RemoveAt(index);
}
public bool Remove(object item)
{
return _innerList.Remove(item);
}
public IEnumerator<object> GetEnumerator()
{
return _innerList.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)_innerList).GetEnumerator();
}
public dynamic ElementAt(int index)
{
return _innerList.ElementAt(index);
}
public dynamic ElementAtOrDefault(int index)
{
return _innerList.ElementAtOrDefault(index);
}
public dynamic First()
{
if (_innerList.Count == 0) throw new InvalidOperationException();
return _innerList.First();
}
public dynamic FirstOrDefault()
{
return _innerList.FirstOrDefault();
}
public dynamic Last()
{
return _innerList.Last();
}
public dynamic LastOrDefault()
{
return _innerList.LastOrDefault();
}
public dynamic Single()
{
return _innerList.Single();
}
public dynamic SingleOrDefault()
{
return _innerList.SingleOrDefault();
}
public override bool TryConvert(ConvertBinder binder, out object result)
{
if (ConcreteCollectionTypeCreator.IsCollectionType(binder.Type))
{
if (ConcreteCollectionTypeCreator.TryCreate(binder.Type, this, out result))
return true;
}
return base.TryConvert(binder, out result);
}
}
}