/
StringIntegerEnum.cs
44 lines (34 loc) · 1.56 KB
/
StringIntegerEnum.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
42
43
44
using Generic = System.Collections.Generic;
namespace AtomicNet
{
public class StringIntegerEnum<tStringIntegerEnum> : IntegerEnum<tStringIntegerEnum>
where tStringIntegerEnum : StringIntegerEnum<tStringIntegerEnum>
{
private
static
readonly Dictionary
<
string,
tStringIntegerEnum
> allValuesByStringValue = new Dictionary<string, tStringIntegerEnum>();
private
readonly string secondaryNaturalValue;
protected StringIntegerEnum(int naturalValue, string secondaryNaturalValue) : base(naturalValue)
{
Throw<System.ArgumentException>.If(allValuesByStringValue.ContainsKey(secondaryNaturalValue), "A duplicate secondary natural value (" + secondaryNaturalValue + ") was specified for the " + TypeSupport<tStringIntegerEnum>.Name + " enumerated context.");
allValuesByStringValue.Add(secondaryNaturalValue, (tStringIntegerEnum) this);
this.secondaryNaturalValue = secondaryNaturalValue;
}
public static implicit operator string(StringIntegerEnum<tStringIntegerEnum> value)
{
return value != null ? value.secondaryNaturalValue : null;
}
public static Generic.List<string> AllStringValues
{
get
{
return allValuesByStringValue.Values.ConvertToList(a => a.secondaryNaturalValue);
}
}
}
}