-
Notifications
You must be signed in to change notification settings - Fork 110
/
Copy pathNamedObjectSequence.cs
41 lines (33 loc) · 1.28 KB
/
NamedObjectSequence.cs
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
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
namespace Microsoft.PowerPlatform.PowerApps.Persistence.PaYaml.Models;
/// <summary>
/// Represents a collection of named objects whose keys are the name of each item.
/// </summary>
public class NamedObjectSequence<TValue> : NamedObjectSequenceBase<string, TValue, NamedObject<TValue>>, INamedObjectCollection<TValue>
where TValue : notnull
{
private static readonly StringComparer DefaultComparer = StringComparer.Ordinal;
public NamedObjectSequence()
: this(DefaultComparer)
{
}
public NamedObjectSequence(IEqualityComparer<string>? comparer)
: base(null, comparer ?? DefaultComparer)
{
}
public NamedObjectSequence(IEnumerable<NamedObject<TValue>>? values)
: this(values, DefaultComparer)
{
}
public NamedObjectSequence(IEnumerable<NamedObject<TValue>>? values, IEqualityComparer<string>? comparer)
: base(values, comparer ?? DefaultComparer)
{
}
protected override NamedObject<TValue> CreateNamedObject(string name, TValue value)
{
_ = name ?? throw new ArgumentNullException(nameof(name));
_ = value ?? throw new ArgumentNullException(nameof(value));
return new NamedObject<TValue>(name, value);
}
}