CustomFlags 0.0.4
dotnet add package CustomFlags --version 0.0.4
NuGet\Install-Package CustomFlags -Version 0.0.4
<PackageReference Include="CustomFlags" Version="0.0.4" />
paket add CustomFlags --version 0.0.4
#r "nuget: CustomFlags, 0.0.4"
// Install CustomFlags as a Cake Addin #addin nuget:?package=CustomFlags&version=0.0.4 // Install CustomFlags as a Cake Tool #tool nuget:?package=CustomFlags&version=0.0.4
Custom Flags
Custom flags library for C# projects.
This NuGet package provides a flag class that can function like an enumeration of flags. It supports essential functionality such as bitwise operations (| and &), implicit conversion to boolean, and comparison with integers. Additionally, it is independent of machine architecture limits, meaning it can support as many flags as required by the user.
Features
- Create unlimited flags with same functionalty as enum flags.
- Perform bitwise operations, boolean convertions and comperation with integers.
- Switch over flags "can be used to switch over any object".
How To Use
Define your custom flags
public class ColorFlag : Flag
{
public static ColorFlag NON = new ColorFlag(false);
public static ColorFlag RED = new ColorFlag(1);
public static ColorFlag YELLOW = new ColorFlag(2);
public static ColorFlag BLUE = new ColorFlag(3);
public static ColorFlag BLACK = new ColorFlag(4);
public static ColorFlag WHITE = new ColorFlag(5);
public static ColorFlag BnW = new ColorFlag(4, 5);
public static ColorFlag ALL = new ColorFlag(true);
private const int LENGTH = 128;
private ColorFlag(bool allTrue) : base(LENGTH, allTrue) { }
private ColorFlag(params int[] indices) : base(LENGTH, indices) { }
}
Use defined objects through your code
private static string GetColors(ColorFlag flag)
{
List<string> colors = new List<string>();
if (flag & ColorFlag.NON)
return "";
if (flag & ColorFlag.RED)
colors.Add("Red");
if (flag & ColorFlag.BLUE)
colors.Add("Blue");
if (flag & ColorFlag.YELLOW)
colors.Add("Yellow");
if (flag & ColorFlag.WHITE)
colors.Add("White");
if (flag & ColorFlag.BLACK)
colors.Add("Black");
string str = string.Concat(colors.Select(s => s + " and "));
return str.Substring(0, str.Length - 5);
}
Using of Switch class
Flag.Switch(
new Switch(color)
{
new Case(ColorFlag.BLUE)
{
Action = () => Console.WriteLine("Color is blue.")
},
new Case(ColorFlag.RED)
{
Action = () => Console.WriteLine("Color is red.")
},
new Default
{
Action = () => Console.WriteLine("Default color is selected.")
},
});
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 | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.0 is compatible. netstandard1.1 was computed. netstandard1.2 was computed. netstandard1.3 was computed. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 was computed. netstandard2.1 was computed. |
.NET Framework | net45 was computed. net451 was computed. net452 was computed. net46 was computed. 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 | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore was computed. netcore45 was computed. netcore451 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
# Version 0.0.1
- Identify Flag class.
- Add Switch class and its cases.
# Version 0.0.4
- Target .NET Standard 1.0.
- Expose flags array constructor as protected.
- Store each 8 flags in a single byte.