Mercurial > pub > bltoolkit
comparison Source/Common/Compatibility3.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 #if FW2 | |
2 | |
3 namespace System | |
4 { | |
5 public delegate void Action(); | |
6 | |
7 public delegate void Action<T1, T2>(T1 arg1, T2 arg2); | |
8 | |
9 public delegate void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3); | |
10 | |
11 public delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); | |
12 | |
13 public delegate TResult Func<TResult>(); | |
14 | |
15 public delegate TResult Func<T1, TResult>(T1 arg1); | |
16 | |
17 public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2); | |
18 | |
19 public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3); | |
20 | |
21 public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4); | |
22 } | |
23 | |
24 namespace System.Collections.Specialized | |
25 { | |
26 public interface INotifyCollectionChanged | |
27 { | |
28 event NotifyCollectionChangedEventHandler CollectionChanged; | |
29 } | |
30 | |
31 /// <summary> | |
32 /// This enum describes the action that caused a CollectionChanged event. | |
33 /// </summary> | |
34 public enum NotifyCollectionChangedAction | |
35 { | |
36 /// <summary> One or more items were added to the collection. </summary> | |
37 Add, | |
38 /// <summary> One or more items were removed from the collection. </summary> | |
39 Remove, | |
40 /// <summary> One or more items were replaced in the collection. </summary> | |
41 Replace, | |
42 /// <summary> One or more items were moved within the collection. </summary> | |
43 Move, | |
44 /// <summary> The contents of the collection changed dramatically. </summary> | |
45 Reset, | |
46 } | |
47 | |
48 /// <summary> | |
49 /// Arguments for the CollectionChanged event. A collection that supports | |
50 /// INotifyCollectionChangedThis raises this event whenever an item is added or | |
51 /// removed, or when the contents of the collection changes dramatically. | |
52 /// </summary> | |
53 public class NotifyCollectionChangedEventArgs : EventArgs | |
54 { | |
55 #region .ctors | |
56 | |
57 /// <summary> | |
58 /// Construct a NotifyCollectionChangedEventArgs that describes a reset change. | |
59 /// </summary> | |
60 /// <param name="action">The action that caused the event (must be Reset).</param> | |
61 public NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction action) | |
62 : this(action, null, -1) | |
63 { | |
64 } | |
65 | |
66 /// <summary> | |
67 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item change. | |
68 /// </summary> | |
69 /// <param name="action">The action that caused the event; can only be Reset, Add or Remove action.</param> | |
70 /// <param name="changedItem">The item affected by the change.</param> | |
71 public NotifyCollectionChangedEventArgs( | |
72 NotifyCollectionChangedAction action, | |
73 object changedItem) | |
74 : this(action, changedItem, -1) | |
75 { | |
76 } | |
77 | |
78 /// <summary> | |
79 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item change. | |
80 /// </summary> | |
81 /// <param name="action">The action that caused the event.</param> | |
82 /// <param name="changedItem">The item affected by the change.</param> | |
83 /// <param name="index">The index where the change occurred.</param> | |
84 public NotifyCollectionChangedEventArgs( | |
85 NotifyCollectionChangedAction action, | |
86 object changedItem, | |
87 int index) | |
88 : this(action, changedItem == null? null: new[]{ changedItem }, index) | |
89 { | |
90 } | |
91 | |
92 /// <summary> | |
93 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item change. | |
94 /// </summary> | |
95 /// <param name="action">The action that caused the event.</param> | |
96 /// <param name="changedItems">The items affected by the change.</param> | |
97 public NotifyCollectionChangedEventArgs( | |
98 NotifyCollectionChangedAction action, | |
99 IList changedItems) | |
100 : this(action, changedItems, -1) | |
101 { | |
102 } | |
103 | |
104 /// <summary> | |
105 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item change (or a reset). | |
106 /// </summary> | |
107 /// <param name="action">The action that caused the event.</param> | |
108 /// <param name="changedItems">The items affected by the change.</param> | |
109 /// <param name="startingIndex">The index where the change occurred.</param> | |
110 public NotifyCollectionChangedEventArgs( | |
111 NotifyCollectionChangedAction action, | |
112 IList changedItems, | |
113 int startingIndex) | |
114 { | |
115 _action = action; | |
116 | |
117 if (action == NotifyCollectionChangedAction.Add) | |
118 { | |
119 _newItems = changedItems; | |
120 _newStartingIndex = startingIndex; | |
121 } | |
122 else if (action == NotifyCollectionChangedAction.Remove) | |
123 { | |
124 _oldItems = changedItems; | |
125 _oldStartingIndex = startingIndex; | |
126 } | |
127 } | |
128 | |
129 /// <summary> | |
130 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Replace event. | |
131 /// </summary> | |
132 /// <param name="action">Can only be a Replace action.</param> | |
133 /// <param name="newItem">The new item replacing the original item.</param> | |
134 /// <param name="oldItem">The original item that is replaced.</param> | |
135 public NotifyCollectionChangedEventArgs( | |
136 NotifyCollectionChangedAction action, | |
137 object newItem, | |
138 object oldItem) | |
139 : this(action, new[] { newItem }, new[] { oldItem }, -1) | |
140 { | |
141 } | |
142 | |
143 /// <summary> | |
144 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Replace event. | |
145 /// </summary> | |
146 /// <param name="action">Can only be a Replace action.</param> | |
147 /// <param name="newItem">The new item replacing the original item.</param> | |
148 /// <param name="oldItem">The original item that is replaced.</param> | |
149 /// <param name="index">The index of the item being replaced.</param> | |
150 public NotifyCollectionChangedEventArgs( | |
151 NotifyCollectionChangedAction action, | |
152 object newItem, | |
153 object oldItem, | |
154 int index) | |
155 : this(action, new[] { newItem }, new[] { oldItem }, index) | |
156 { | |
157 } | |
158 | |
159 /// <summary> | |
160 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Replace event. | |
161 /// </summary> | |
162 /// <param name="action">Can only be a Replace action.</param> | |
163 /// <param name="newItems">The new items replacing the original items.</param> | |
164 /// <param name="oldItems">The original items that are replaced.</param> | |
165 public NotifyCollectionChangedEventArgs( | |
166 NotifyCollectionChangedAction action, | |
167 IList newItems, | |
168 IList oldItems) | |
169 : this(action, newItems, oldItems, -1) | |
170 { | |
171 } | |
172 | |
173 /// <summary> | |
174 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Replace event. | |
175 /// </summary> | |
176 /// <param name="action">Can only be a Replace action.</param> | |
177 /// <param name="newItems">The new items replacing the original items.</param> | |
178 /// <param name="oldItems">The original items that are replaced.</param> | |
179 /// <param name="startingIndex">The starting index of the items being replaced.</param> | |
180 public NotifyCollectionChangedEventArgs( | |
181 NotifyCollectionChangedAction action, | |
182 IList newItems, | |
183 IList oldItems, | |
184 int startingIndex) | |
185 { | |
186 _action = action; | |
187 | |
188 _newItems = newItems; | |
189 _newStartingIndex = startingIndex; | |
190 _oldItems = oldItems; | |
191 _oldStartingIndex = startingIndex; | |
192 } | |
193 | |
194 /// <summary> | |
195 /// Construct a NotifyCollectionChangedEventArgs that describes a one-item Move event. | |
196 /// </summary> | |
197 /// <param name="action">Can only be a Move action.</param> | |
198 /// <param name="changedItem">The item affected by the change.</param> | |
199 /// <param name="index">The new index for the changed item.</param> | |
200 /// <param name="oldIndex">The old index for the changed item.</param> | |
201 public NotifyCollectionChangedEventArgs( | |
202 NotifyCollectionChangedAction action, | |
203 object changedItem, | |
204 int index, | |
205 int oldIndex) | |
206 : this(action, new[]{changedItem}, index, oldIndex) | |
207 { | |
208 } | |
209 | |
210 /// <summary> | |
211 /// Construct a NotifyCollectionChangedEventArgs that describes a multi-item Move event. | |
212 /// </summary> | |
213 /// <param name="action">The action that caused the event.</param> | |
214 /// <param name="changedItems">The items affected by the change.</param> | |
215 /// <param name="index">The new index for the changed items.</param> | |
216 /// <param name="oldIndex">The old index for the changed items.</param> | |
217 public NotifyCollectionChangedEventArgs( | |
218 NotifyCollectionChangedAction action, | |
219 IList changedItems, | |
220 int index, | |
221 int oldIndex) | |
222 { | |
223 _action = action; | |
224 | |
225 _newItems = changedItems; | |
226 _newStartingIndex = index; | |
227 _oldItems = changedItems; | |
228 _oldStartingIndex = oldIndex; | |
229 } | |
230 | |
231 #endregion | |
232 | |
233 #region Properties | |
234 | |
235 private readonly NotifyCollectionChangedAction _action; | |
236 /// <summary> | |
237 /// The action that caused the event. | |
238 /// </summary> | |
239 public NotifyCollectionChangedAction Action | |
240 { | |
241 get { return _action; } | |
242 } | |
243 | |
244 private readonly IList _newItems; | |
245 /// <summary> | |
246 /// The items affected by the change. | |
247 /// </summary> | |
248 public IList NewItems | |
249 { | |
250 get { return _newItems; } | |
251 } | |
252 | |
253 private readonly IList _oldItems; | |
254 /// <summary> | |
255 /// The old items affected by the change (for Replace events). | |
256 /// </summary> | |
257 public IList OldItems | |
258 { | |
259 get { return _oldItems; } | |
260 } | |
261 | |
262 private readonly int _newStartingIndex = -1; | |
263 /// <summary> | |
264 /// The index where the change occurred. | |
265 /// </summary> | |
266 public int NewStartingIndex | |
267 { | |
268 get { return _newStartingIndex; } | |
269 } | |
270 | |
271 private readonly int _oldStartingIndex = -1; | |
272 /// <summary> | |
273 /// The old index where the change occurred (for Move events). | |
274 /// </summary> | |
275 public int OldStartingIndex | |
276 { | |
277 get { return _oldStartingIndex; } | |
278 } | |
279 | |
280 #endregion | |
281 } | |
282 | |
283 /// <summary> | |
284 /// The delegate to use for handlers that receive the CollectionChanged event. | |
285 /// </summary> | |
286 public delegate void NotifyCollectionChangedEventHandler(object sender, NotifyCollectionChangedEventArgs e); | |
287 } | |
288 | |
289 namespace System.Runtime.CompilerServices | |
290 { | |
291 internal class ExtensionAttribute : Attribute {} | |
292 } | |
293 | |
294 #endif |