-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIObservableCollection.cs
More file actions
38 lines (29 loc) · 2.34 KB
/
Copy pathIObservableCollection.cs
File metadata and controls
38 lines (29 loc) · 2.34 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
using System.Collections.Specialized;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace Kritjara.Collections.ObjectModel;
/// <summary>Представляет коллецию, которая реализует <see cref="INotifyCollectionChanged"/>.</summary>
/// <typeparam name="T">Тип элементов, содержащихся в коллекции.</typeparam>
[CollectionBuilder(typeof(ObservableFactory), nameof(ObservableFactory.CreateObservableCollection))]
public interface IObservableCollection<T> : IList<T>, INotifyCollectionChanged, INotifyPropertyChanged
{
/// <inheritdoc cref="List{T}.AddRange(IEnumerable{T})"/>
void AddRange(IEnumerable<T> collection);
/// <inheritdoc cref="List{T}.InsertRange(int, IEnumerable{T})"/>
void InsertRange(int index, IEnumerable<T> collection);
/// <inheritdoc cref="System.Collections.ObjectModel.ObservableCollection{T}.Move(int, int)"/>
public void Move(int oldIndex, int newIndex);
/// <inheritdoc cref="List{T}.RemoveRange(int, int)"/>
void RemoveRange(int index, int count);
/// <summary>Создаёт пустую коллекцию.</summary>
static IObservableCollection<T> Create() => new ObservableCollection<T>();
/// <summary>Создаёт пустую коллекцию с указанной начальной ёмкостью.</summary>
/// <param name="capacity">Начальная ёмкость списка.</param>
static IObservableCollection<T> Create(int capacity) => new ObservableCollection<T>(capacity);
/// <summary>Создаёт коллекцию, содержащую скопированные элементы из указанной коллекции.</summary>
/// <param name="items">Коллекция, элементы которой будут скопированы.</param>
static IObservableCollection<T> Create(IEnumerable<T> items) => new ObservableCollection<T>(items);
/// <summary>Создаёт оболочку над стандартной наблюдаемой коллекцией в виде <see cref="IObservableCollection{T}"/>.</summary>
/// <param name="source">Наблюдаемая коллекция.</param>
static IObservableCollection<T> Create(System.Collections.ObjectModel.ObservableCollection<T> source) => new ObservableCollectionShell<T>(source);
}