Redpoint.StringEnum 2024.1340.15

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Redpoint.StringEnum --version 2024.1340.15
                    
NuGet\Install-Package Redpoint.StringEnum -Version 2024.1340.15
                    
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="Redpoint.StringEnum" Version="2024.1340.15" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.StringEnum" Version="2024.1340.15" />
                    
Directory.Packages.props
<PackageReference Include="Redpoint.StringEnum" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Redpoint.StringEnum --version 2024.1340.15
                    
#r "nuget: Redpoint.StringEnum, 2024.1340.15"
                    
#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.
#addin nuget:?package=Redpoint.StringEnum&version=2024.1340.15
                    
Install Redpoint.StringEnum as a Cake Addin
#tool nuget:?package=Redpoint.StringEnum&version=2024.1340.15
                    
Install Redpoint.StringEnum as a Cake Tool

Redpoint.StringEnum

This library provides an API for defining and using string-backed enumeration types. These are useful when used with databases, where storing string values for enumerations improves forward and backward compatibility (unlike storing numeric values).

Defining a string-backed enumeration type

You can create a string-backed enumeration, by defining a class like so:

class Example : StringEnum<Example>
{
    public static readonly StringEnumValue<Example> FirstValue = Create("first-value");

    public static readonly StringEnumValue<Example> SecondValue = Create("second-value");

    public static readonly StringEnumValue<Example> ThirdValue = Create("third-value");

    // ...
}

The string values that represent the enumeration are case-and-byte sensitive (ordinal comparison). You can not create enumeration values from a null string; ArgumentNullException will be thrown if you pass a null value to Create.

Defining additional enumeration values at runtime

There is currently no API for defining additional enumeration values at runtime; the possible enumeration values are lazy-loaded once by looking at the static fields and static properties of the class that inherits from StringEnum<T> (via the T type parameter). Both public and non-public fields/properties are included.

This library is both trim and AOT-compatible, as it uses [DynamicallyAccessedMembers] to ensure the fields and properties of the enumeration type are available at runtime for reflection.

Static usage of values

In most code, you'll simply use the static readonly fields you've defined, such as Example.FirstValue. All instances of the value - even those from parsing - are guaranteed to be reference and value equal.

Parsing known values from strings

To parse a value that is known to be valid from a string, you can use Example.Parse or StringEnumValue<Example>.Parse:

var value = Example.Parse("first-value");
var value2 = StringEnumValue<Example>.Parse("second-value");

If the value is not valid when calling Parse, StringEnumParseException will be thrown. You should use TryParse (see below) if the value is potentially invalid.

If you pass a null value to Parse, ArgumentNullException will be thrown.

Parsing potentially invalid string values

If you're unsure whether a string is a valid enumeration value, you can use Example.TryParse or StringEnumValue<Example>.TryParse:

var isValid = Example.TryParse("...", out var value);
var isValid2 = StringEnumValue<Example>.TryParse("...", out var value2);

If you pass a null value to TryParse, ArgumentNullException will be thrown.

Parsing strings to runtime-based enumeration types

If you don't know the type of the string enumeration you want to parse into at compile time, you can use DynamicStringEnumValue.TryParse to parse any string value into an instance of StringEnumValue<T> by passing the StringEnumValue<T> type as the first parameter, like so:

var type = typeof(StringEnumValue<Example>);
var isValid = DynamicStringEnumValue.TryParse(type, "...", out var value);

You can use DynamicStringEnumValue.IsStringEnumValueType to check if type is a constructed generic type of StringEnumValue<T>. The APIs provided by DynamicStringEnumValue are primarily intended to be used with database serialization and deserialization, where the concrete types of values are not known at the point of deserialization.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Redpoint.StringEnum:

Package Downloads
Redpoint.CloudFramework

A framework for building ASP.NET Core applications on top of Google Cloud Firestore in Datastore mode. Not only does this framework provide a model-based API for interacting with Google Cloud Firestore, it contains useful implementations of things like database migrations, distributed locks, geographic indexes and sharded counters.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2025.1141.1424 129 5/21/2025
2025.1140.383 124 5/20/2025
2025.1140.377 127 5/20/2025
2025.1139.983 133 5/19/2025
2025.1139.952 127 5/19/2025
2025.1139.941 121 5/19/2025
2025.1139.855 123 5/19/2025
2025.1139.850 121 5/19/2025
2025.1139.837 128 5/19/2025
2025.1139.811 126 5/19/2025
2025.1139.806 124 5/19/2025
2025.1139.796 121 5/19/2025
2025.1139.729 121 5/19/2025
2025.1139.719 136 5/19/2025
2025.1139.706 129 5/19/2025
2025.1139.694 123 5/19/2025
2025.1139.679 125 5/19/2025
2025.1139.662 127 5/19/2025
2025.1139.638 122 5/19/2025
2025.1139.628 126 5/19/2025
2025.1139.626 127 5/19/2025
2025.1139.619 125 5/19/2025
2025.1139.605 125 5/19/2025
2025.1139.600 128 5/19/2025
2025.1139.583 122 5/19/2025
2025.1139.573 123 5/19/2025
2025.1139.564 123 5/19/2025
2025.1139.552 131 5/19/2025
2025.1139.543 128 5/19/2025
2025.1138.909 126 5/18/2025
2025.1136.150 190 5/16/2025
2025.1135.267 205 5/15/2025
2025.1135.143 204 5/15/2025
2025.1133.453 222 5/13/2025
2025.1133.351 215 5/13/2025
2025.1133.349 213 5/13/2025
2025.1133.347 218 5/13/2025
2025.1130.236 63 5/10/2025
2025.1129.831 96 5/9/2025
2025.1129.346 121 5/9/2025
2025.1129.345 117 5/9/2025
2025.1121.1370 139 5/1/2025
2025.1119.450 146 4/29/2025
2025.1119.436 145 4/29/2025
2025.1119.409 147 4/29/2025
2025.1119.388 147 4/29/2025
2025.1119.360 142 4/29/2025
2025.1119.328 163 4/29/2025
2025.1119.299 147 4/29/2025
2025.1119.287 148 4/29/2025
2025.1116.868 75 4/26/2025
2025.1116.841 71 4/26/2025
2025.1116.444 73 4/26/2025
2025.1115.498 117 4/25/2025
2025.1115.491 123 4/25/2025
2025.1100.365 170 4/10/2025
2025.1100.336 164 4/10/2025
2025.1100.331 171 4/10/2025
2025.1098.108 158 4/8/2025
2025.1093.291 170 4/3/2025
2025.1091.38 174 4/1/2025
2025.1091.26 174 4/1/2025
2025.1090.237 162 3/31/2025
2025.1089.1386 159 3/30/2025
2025.1083.515 407 3/24/2025
2025.1083.408 338 3/24/2025
2025.1083.398 337 3/24/2025
2025.1083.125 335 3/24/2025
2025.1080.41 146 3/21/2025
2025.1075.357 214 3/16/2025
2025.1073.332 138 3/14/2025
2025.1072.541 167 3/13/2025
2025.1072.536 149 3/13/2025
2025.1064.602 230 3/5/2025
2025.1064.546 211 3/5/2025
2025.1062.589 160 3/3/2025
2025.1061.513 114 3/2/2025
2025.1060.490 104 3/1/2025
2025.1059.134 112 2/28/2025
2025.1057.1020 106 2/26/2025
2025.1056.584 101 2/25/2025
2025.1050.282 129 2/19/2025
2025.1050.232 117 2/19/2025
2025.1049.55 138 2/18/2025
2025.1045.285 115 2/14/2025
2025.1043.288 105 2/12/2025
2025.1043.246 101 2/12/2025
2025.1043.197 112 2/12/2025
2025.1043.180 99 2/12/2025
2025.1043.108 100 2/12/2025
2025.1043.38 99 2/12/2025
2025.1043.27 99 2/12/2025
2025.1042.725 113 2/11/2025
2025.1042.690 104 2/11/2025
2025.1042.688 109 2/11/2025
2025.1042.418 101 2/11/2025
2025.1042.215 110 2/11/2025
2025.1042.203 111 2/11/2025
2025.1042.184 105 2/11/2025
2025.1042.142 114 2/11/2025
2025.1042.127 108 2/11/2025
2025.1037.1327 103 2/6/2025
2025.1036.280 111 2/5/2025
2025.1036.55 113 2/5/2025
2025.1035.1387 122 2/4/2025
2025.1031.111 120 1/31/2025
2025.1030.916 114 1/30/2025
2025.1030.895 114 1/30/2025
2025.1030.592 116 1/30/2025
2025.1029.664 97 1/29/2025
2025.1029.632 93 1/29/2025
2025.1029.596 99 1/29/2025
2025.1028.386 93 1/28/2025
2025.1025.723 96 1/25/2025
2025.1025.712 95 1/25/2025
2025.1019.913 99 1/19/2025
2025.1018.374 101 1/18/2025
2025.1018.285 134 1/18/2025
2025.1017.646 92 1/17/2025
2025.1017.379 126 1/17/2025
2025.1016.1370 100 1/16/2025
2025.1016.765 96 1/16/2025
2025.1016.712 98 1/16/2025
2025.1016.550 98 1/16/2025
2025.1016.541 100 1/16/2025
2025.1016.532 100 1/16/2025
2025.1016.325 94 1/16/2025
2025.1016.308 96 1/16/2025
2025.1016.296 91 1/16/2025
2025.1016.237 107 1/16/2025
2025.1016.184 92 1/16/2025
2025.1016.70 94 1/16/2025
2025.1016.6 95 1/16/2025
2025.1015.1438 95 1/16/2025
2025.1015.1437 92 1/16/2025
2025.1015.1411 92 1/15/2025
2025.1015.240 63 1/15/2025
2025.1015.223 55 1/15/2025
2025.1015.183 64 1/15/2025
2025.1014.1342 70 1/14/2025
2025.1014.273 82 1/14/2025
2025.1014.256 86 1/14/2025
2025.1012.440 88 1/12/2025
2025.1012.327 91 1/12/2025
2025.1012.279 92 1/12/2025
2025.1002.636 104 1/2/2025
2025.1001.1435 106 1/2/2025
2025.1001.1397 101 1/1/2025
2025.1001.770 108 1/1/2025
2025.1001.570 114 1/1/2025
2025.1001.558 103 1/1/2025
2025.1001.421 107 1/1/2025
2025.1001.390 108 1/1/2025
2025.1001.234 121 1/1/2025
2025.1001.123 113 1/1/2025
2024.1360.354 110 12/25/2024
2024.1360.60 99 12/25/2024
2024.1360.32 98 12/25/2024
2024.1358.450 100 12/23/2024
2024.1358.359 101 12/23/2024
2024.1358.312 98 12/23/2024
2024.1358.244 108 12/23/2024
2024.1358.120 93 12/23/2024
2024.1348.253 115 12/13/2024
2024.1345.1379 95 12/10/2024
2024.1345.506 94 12/10/2024
2024.1345.379 93 12/10/2024
2024.1345.145 98 12/10/2024
2024.1345.72 97 12/10/2024
2024.1345.69 94 12/10/2024
2024.1345.15 103 12/10/2024
2024.1344.1436 98 12/10/2024
2024.1344.600 104 12/9/2024
2024.1344.411 107 12/9/2024
2024.1340.379 111 12/5/2024
2024.1340.15 105 12/5/2024
2024.1338.786 111 12/3/2024
2024.1338.722 115 12/3/2024
2024.1338.697 106 12/3/2024
2024.1338.639 109 12/3/2024
2024.1338.541 107 12/3/2024
2024.1338.318 96 12/3/2024
2024.1338.298 99 12/3/2024
2024.1338.98 107 12/3/2024
2024.1337.756 107 12/2/2024
2024.1337.634 113 12/2/2024
2024.1337.625 100 12/2/2024
2024.1337.621 102 12/2/2024
2024.1337.594 101 12/2/2024
2024.1337.136 90 12/2/2024
2024.1336.793 112 12/1/2024
2024.1336.773 114 12/1/2024
2024.1336.305 102 12/1/2024
2024.1336.12 116 12/1/2024
2024.1335.1421 109 11/30/2024
2024.1335.1384 109 11/30/2024
2024.1334.1308 106 11/29/2024
2024.1334.764 102 11/29/2024
2024.1334.722 106 11/29/2024
2024.1330.185 104 11/25/2024
2024.1328.505 111 11/23/2024
2024.1328.470 102 11/23/2024
2024.1328.452 102 11/23/2024
2024.1323.910 116 11/18/2024
2024.1323.653 99 11/18/2024
2024.1323.185 99 11/18/2024
2024.1323.49 97 11/18/2024
2024.1322.714 99 11/17/2024
2024.1320.653 106 11/15/2024
2024.1320.619 100 11/15/2024
2024.1320.601 95 11/15/2024
2024.1320.159 100 11/15/2024
2024.1320.98 102 11/15/2024
2024.1320.2 108 11/15/2024
2024.1319.1431 105 11/15/2024
2024.1319.1335 107 11/14/2024
2024.1317.631 109 11/12/2024
2024.1316.330 116 11/11/2024
2024.1311.540 107 11/6/2024
2024.1306.225 107 11/1/2024
2024.1306.199 112 11/1/2024
2024.1306.171 101 11/1/2024
2024.1306.117 115 11/1/2024
2024.1305.506 100 10/31/2024
2024.1305.502 100 10/31/2024
2024.1305.465 102 10/31/2024
2024.1305.442 102 10/31/2024
2024.1305.399 102 10/31/2024
2024.1299.1070 109 10/25/2024
2024.1289.621 110 10/15/2024
2024.1289.338 105 10/15/2024
2024.1277.836 108 10/5/2024
2024.1277.711 110 10/3/2024
2024.1277.695 105 10/3/2024
2024.1270.409 118 9/26/2024
2024.1269.621 118 9/25/2024
2024.1269.619 109 9/25/2024
2024.1269.605 118 9/25/2024
2024.1242.282 123 8/29/2024
2024.1242.261 121 8/29/2024
2024.1242.233 125 8/29/2024
2024.1238.829 137 8/25/2024
2024.1238.327 142 8/25/2024
2024.1225.297 129 8/12/2024
2024.1205.140 126 7/23/2024
2024.1204.110 128 7/22/2024
2024.1204.62 121 7/22/2024
2024.1190.491 129 7/8/2024
2024.1177.305 126 6/25/2024
2024.1168.700 134 6/16/2024
2024.1168.649 130 6/16/2024
2024.1168.535 136 6/16/2024
2024.1167.643 128 6/15/2024
2024.1166.989 123 6/14/2024
2024.1166.818 125 6/14/2024
2024.1166.535 130 6/14/2024
2024.1166.422 120 6/14/2024
2024.1166.362 123 6/14/2024
2024.1166.360 126 6/14/2024
2024.1165.1212 124 6/13/2024
2024.1165.1160 124 6/13/2024
2024.1165.1019 127 6/13/2024
2024.1165.978 121 6/13/2024
2024.1165.920 119 6/13/2024
2024.1165.908 125 6/13/2024
2024.1165.873 123 6/13/2024
2024.1165.830 122 6/13/2024
2024.1165.806 125 6/13/2024
2024.1165.794 130 6/13/2024
2024.1165.792 126 6/13/2024
2024.1165.761 125 6/13/2024
2024.1165.743 119 6/13/2024
2024.1165.735 125 6/13/2024
2024.1165.713 124 6/13/2024
2024.1165.640 118 6/13/2024
2024.1165.574 124 6/13/2024
2024.1165.466 121 6/13/2024
2024.1165.417 123 6/13/2024
2024.1165.392 119 6/13/2024
2024.1164.341 110 6/12/2024
2024.1155.941 133 6/3/2024
2024.1140.783 135 5/19/2024
2024.1140.692 123 5/19/2024
2024.1140.673 129 5/19/2024
2024.1129.506 126 5/8/2024
2024.1128.831 142 5/7/2024
2024.1124.465 107 5/3/2024
2024.1123.1162 110 5/2/2024
2024.1123.1117 100 5/2/2024
2024.1123.1050 91 5/2/2024
2024.1122.352 128 5/1/2024
2024.1122.233 127 5/1/2024
2024.1115.1101 129 4/24/2024
2024.1115.1048 116 4/24/2024
2024.1115.932 119 4/24/2024
2024.1115.858 127 4/24/2024
2024.1115.665 128 4/24/2024
2024.1115.648 121 4/24/2024
2024.1115.591 127 4/24/2024
2024.1101.390 127 4/10/2024
2024.1100.741 134 4/9/2024
2024.1099.526 136 4/8/2024
2024.1099.466 128 4/8/2024
2024.1098.573 133 4/7/2024
2024.1095.977 134 4/4/2024
2024.1095.847 129 4/4/2024
2024.1095.604 129 4/4/2024
2024.1095.485 151 4/4/2024
2024.1094.930 128 4/3/2024
2024.1094.910 139 4/3/2024
2024.1094.387 141 4/3/2024
2024.1094.313 128 4/3/2024
2024.1093.520 126 4/2/2024
2024.1092.240 127 4/1/2024
2024.1089.1425 144 3/29/2024
2024.1089.983 132 3/29/2024
2024.1089.942 119 3/29/2024
2024.1089.2 138 3/29/2024
2024.1088.1343 130 3/28/2024
2024.1088.1139 134 3/28/2024
2024.1088.875 104 3/28/2024
2024.1088.700 120 3/28/2024
2024.1088.603 135 3/28/2024
2024.1088.590 139 3/28/2024
2024.1088.575 133 3/28/2024
2024.1088.561 132 3/28/2024
2024.1088.506 135 3/28/2024
2024.1088.18 136 3/28/2024
2024.1087.1181 145 3/27/2024
2024.1087.1173 135 3/27/2024
2024.1087.1143 141 3/27/2024
2024.1087.1108 120 3/27/2024
2024.1087.950 132 3/27/2024
2024.1087.939 119 3/27/2024
2024.1087.252 137 3/27/2024
2024.1070.736 135 3/10/2024
2024.1049.1437 142 2/19/2024
2024.1036.571 142 2/5/2024
2024.1036.508 129 2/5/2024
2024.1032.1204 131 2/1/2024
2024.1032.1133 126 2/1/2024
2024.1032.1122 148 2/1/2024
2024.1032.1071 124 2/1/2024
2024.1032.940 120 2/1/2024
2024.1031.912 122 1/31/2024
2024.1031.893 123 1/31/2024
2024.1031.851 112 1/31/2024
2024.1031.829 118 1/31/2024
2024.1031.386 117 1/31/2024
2024.1031.318 137 1/31/2024
2024.1017.460 145 1/17/2024
2024.1017.420 123 1/17/2024
2024.1017.163 126 1/17/2024
2024.1016.414 653 1/16/2024
2024.1012.167 144 1/12/2024
2024.1011.406 137 1/11/2024
2024.1010.315 151 1/10/2024
2023.1358.326 183 12/24/2023
2023.1351.473 144 12/17/2023
2023.1351.445 146 12/17/2023
2023.1351.432 155 12/17/2023
2023.1350.478 146 12/16/2023
2023.1344.600 162 12/10/2023
2023.1344.529 170 12/10/2023
2023.1339.582 159 12/5/2023
2023.1338.1072 166 12/4/2023
2023.1336.844 157 12/2/2023
2023.1335.378 161 12/1/2023
2023.1335.236 154 12/1/2023
2023.1335.203 139 12/1/2023