Blowin.FlexEnum
2.1.0
dotnet add package Blowin.FlexEnum --version 2.1.0
NuGet\Install-Package Blowin.FlexEnum -Version 2.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Blowin.FlexEnum" Version="2.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Blowin.FlexEnum --version 2.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Blowin.FlexEnum, 2.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Blowin.FlexEnum as a Cake Addin #addin nuget:?package=Blowin.FlexEnum&version=2.1.0 // Install Blowin.FlexEnum as a Cake Tool #tool nuget:?package=Blowin.FlexEnum&version=2.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FlexEnum
BaseEnum
public sealed class Month : BaseEnum<string>
{
public static readonly Month September = new Month("Sept");
public static readonly Month December = new Month("Dec");
public static readonly Month October = new Month("Octob");
public static readonly Month November = new Month("Novemb");
private Month(string val) : base(val)
{
}
}
Assert.Equal(Month.September, Month.September);
Assert.NotEqual(Month.September, Month.October);
Assert.True(Month.September == Month.September);
Assert.True(Month.September != Month.October);
Assert.Equal("Sept", Month.September);
BaseFlagEnum
public sealed class Brace : BaseFlagEnum<string>
{
public static readonly Brace Start = new Brace(1, "{");
public static readonly Brace End = new Brace(2, "}");
public static readonly Brace StartEnd = new Brace(Start | End, "{}");
public static readonly Brace None = new Brace(int.MinValue, string.Empty);
private Brace(int i, string val) : base(i, val)
{
}
}
Assert.Equal(Brace.Start, Brace.Start);
Assert.NotEqual(Brace.Start, Brace.End);
Assert.True(Brace.Start == Brace.Start);
Assert.True(Brace.Start != Brace.End);
Assert.Equal("[1, {]", Brace.Start);
Assert.True(((Brace.Start | Brace.End) & Brace.End) == Brace.End);
Assert.True(Brace.StartEnd.HasFlag(Brace.End));
Assert.False(Brace.StartEnd.HasFlag(Brace.None));
FlexEnum
IsDefune
Assert.Equal(false, Util.FlexEnum.IsDefined<Brace>(null));
Assert.Equal(true, Util.FlexEnum.IsDefined<Brace>(Brace.Start));
var ctor = typeof(Month).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new []{typeof(string)}, null);
var anotherObj = (Month)ctor.Invoke(new []{"NOT ENUM VALUE"});
Assert.Equal(false, Util.FlexEnum.IsDefined<Brace>(anotherObj));
TryParseTest
Brace parseVal;
Assert.Equal(false, Util.FlexEnum.TryParse("NOTCONTAIN", out parseVal));
Assert.Equal(true, Util.FlexEnum.TryParse("[1, {]", out parseVal));
ParseTest
Assert.Equal(null, Util.FlexEnum.Parse<Brace>("NOTCONTAIN"));
Assert.Equal(Brace.Start, Util.FlexEnum.Parse<Brace>("[1, {]"));
Flag auto generate value
public sealed class StepGenerator1 : BaseFlagEnum<string>
{
public static StepGenerator1 Step1;
public static StepGenerator1 Step2;
public static StepGenerator1 Step3;
static StepGenerator1()
{
StartValue = 5;
Step1 = new StepGenerator1(string.Empty);
Step2 = new StepGenerator1(string.Empty);
Step3 = new StepGenerator1(string.Empty);
}
private StepGenerator1(string val2) : base(val2)
{
}
}
Assert.Equal(5, StepGenerator1.Step1.Value);
Assert.Equal(6, StepGenerator1.Step2.Value);
Assert.Equal(7, StepGenerator1.Step3.Value);
Flag value generator value
public sealed class StepGenerator2 : BaseFlagEnum<string>
{
public static StepGenerator2 Step1;
public static StepGenerator2 Step2;
public static StepGenerator2 Step3;
static StepGenerator2()
{
StartValue = 0;
var gen = new Generator();
Step1 = new StepGenerator2(string.Empty, gen);
Step2 = new StepGenerator2(string.Empty, gen);
Step3 = new StepGenerator2(string.Empty, gen);
}
private StepGenerator2(string val2, IEnumStepGenerator enumStepGenerator)
: base(val2, enumStepGenerator)
{
}
private sealed class Generator : IEnumStepGenerator
{
public int NextStep(int curVal)
{
return 1 << curVal;
}
}
}
}
Assert.Equal(1, StepGenerator2.Step1.Value);
Assert.Equal(2, StepGenerator2.Step2.Value);
Assert.Equal(4, StepGenerator2.Step3.Value);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.1.0 | 600 | 10/18/2019 |