-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIReadOnlyObservableCollection.cs
More file actions
29 lines (24 loc) · 1.66 KB
/
Copy pathIReadOnlyObservableCollection.cs
File metadata and controls
29 lines (24 loc) · 1.66 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
using System.Collections.Specialized;
using System.ComponentModel;
namespace Kritjara.Collections.ObjectModel;
/// <summary>Представляет коллецию только для чтения, которая реализует <see cref="INotifyCollectionChanged"/>.</summary>
/// <typeparam name="T">Тип элементов, содержащихся в коллекции.</typeparam>
public interface IReadOnlyObservableCollection<out T> : IReadOnlyList<T>, INotifyCollectionChanged, INotifyPropertyChanged
{
/// <summary>Создаёт коллецию только для чтения.</summary>
/// <param name="source">Основной источник элементов.</param>
static IReadOnlyObservableCollection<T> Create(IObservableCollection<T> source)
{
if (source is IReadOnlyObservableCollection<T> readonlycollection)
{
return readonlycollection;
}
return new ReadOnlyObservableCollection<T>(source);
}
/// <summary>Создаёт коллецию только для чтения.</summary>
/// <param name="source">Основной источник элементов.</param>
static IReadOnlyObservableCollection<T> Create(System.Collections.ObjectModel.ReadOnlyObservableCollection<T> source) => new ReadOnlyObservableCollection<T>(source);
/// <summary>Создаёт коллецию только для чтения.</summary>
/// <param name="source">Основной источник элементов.</param>
static IReadOnlyObservableCollection<T> Create(System.Collections.ObjectModel.ObservableCollection<T> source) => new ReadOnlyObservableCollection<T>(source);
}