Skip to content

Commit 3f95408

Browse files
Scott DePouwardalis
authored andcommitted
Scott: SmartEnum Implicit Value Conversion (#7)
* Add implicit operator TValue to SmartEnum. * Remove/sort usings. Fix spacing. * Made root namespace of SmartEnum match the AssemblyName: Ardalis.SmartEnum.
1 parent bb7edfc commit 3f95408

File tree

7 files changed

+27
-18
lines changed

7 files changed

+27
-18
lines changed

src/SmartEnum.UnitTests/SmartEnumFromName.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Ardalis.SmartEnum;
2-
using SmartEnum.Exceptions;
1+
using SmartEnum.Exceptions;
32
using System;
43
using Xunit;
54

src/SmartEnum.UnitTests/SmartEnumFromValue.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using Ardalis.SmartEnum;
2-
using SmartEnum.Exceptions;
1+
using SmartEnum.Exceptions;
32
using Xunit;
43

54
namespace SmartEnum.UnitTests
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Xunit;
2+
3+
namespace SmartEnum.UnitTests
4+
{
5+
public class SmartEnumImplicitValueConversion
6+
{
7+
[Fact]
8+
public void ReturnsValueOfGivenEnum()
9+
{
10+
int result = TestEnum.One;
11+
12+
Assert.Equal(TestEnum.One.Value, result);
13+
}
14+
}
15+
}

src/SmartEnum.UnitTests/SmartEnumList.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
using Xunit;
1+
using Xunit;
22

33
namespace SmartEnum.UnitTests
44
{
5-
65
public class SmartEnumList
76
{
87
[Fact]

src/SmartEnum.UnitTests/SmartEnumToString.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Xunit;
1+
using Xunit;
22

33
namespace SmartEnum.UnitTests
44
{

src/SmartEnum/SmartEnum.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
using System;
1+
using Ardalis.GuardClauses;
2+
using SmartEnum.Exceptions;
3+
using System;
24
using System.Collections.Generic;
35
using System.Linq;
46
using System.Reflection;
5-
using Ardalis.GuardClauses;
6-
using SmartEnum.Exceptions;
77

88
namespace Ardalis.SmartEnum
99
{
@@ -28,13 +28,7 @@ private static List<TEnum> ListAllOptions()
2828
.ToList();
2929
}
3030

31-
public static List<TEnum> List
32-
{
33-
get
34-
{
35-
return _list.Value;
36-
}
37-
}
31+
public static List<TEnum> List => _list.Value;
3832

3933
public string Name { get; }
4034
public TValue Value { get; }
@@ -58,7 +52,7 @@ public static TEnum FromName(string name)
5852

5953
public static TEnum FromValue(TValue value)
6054
{
61-
// Can't use == to compare generics unless we constrain TValue to "class",
55+
// Can't use == to compare generics unless we constrain TValue to "class",
6256
// which we don't want because then we couldn't use int.
6357
var result = List.FirstOrDefault(item => EqualityComparer<TValue>.Default.Equals(item.Value, value));
6458
if (result == null)
@@ -69,5 +63,7 @@ public static TEnum FromValue(TValue value)
6963
}
7064

7165
public override string ToString() => $"{Name} ({Value})";
66+
67+
public static implicit operator TValue(SmartEnum<TEnum, TValue> smartEnum) => smartEnum.Value;
7268
}
7369
}

src/SmartEnum/SmartEnum.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<Version>1.0.2</Version>
1717
<AssemblyName>Ardalis.SmartEnum</AssemblyName>
1818
<PackageIconUrl>https://user-images.githubusercontent.com/782127/33497760-facf6550-d69c-11e7-94e4-b3856da259a9.png</PackageIconUrl>
19+
<RootNamespace>Ardalis.SmartEnum</RootNamespace>
1920
</PropertyGroup>
2021

2122
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard1.1|AnyCPU'">

0 commit comments

Comments
 (0)