Redpoint.StringEnum 2025.1139.719

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Redpoint.StringEnum --version 2025.1139.719
                    
NuGet\Install-Package Redpoint.StringEnum -Version 2025.1139.719
                    
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="2025.1139.719" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.StringEnum" Version="2025.1139.719" />
                    
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 2025.1139.719
                    
#r "nuget: Redpoint.StringEnum, 2025.1139.719"
                    
#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=2025.1139.719
                    
Install Redpoint.StringEnum as a Cake Addin
#tool nuget:?package=Redpoint.StringEnum&version=2025.1139.719
                    
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 net9.0 is compatible.  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.
  • net9.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.1171.352 78 6/20/2025
2025.1169.413 127 6/18/2025
2025.1166.1191 137 6/15/2025
2025.1166.1178 121 6/15/2025
2025.1166.1177 121 6/15/2025
2025.1159.445 111 6/8/2025
2025.1159.364 106 6/8/2025
2025.1159.324 104 6/8/2025
2025.1155.438 135 6/4/2025
2025.1141.1424 141 5/21/2025
2025.1140.383 134 5/20/2025
2025.1140.377 137 5/20/2025
2025.1139.983 144 5/19/2025
2025.1139.952 137 5/19/2025
2025.1139.941 132 5/19/2025
2025.1139.855 132 5/19/2025
2025.1139.850 130 5/19/2025
2025.1139.837 137 5/19/2025
2025.1139.811 135 5/19/2025
2025.1139.806 136 5/19/2025
2025.1139.796 129 5/19/2025
2025.1139.729 131 5/19/2025
2025.1139.719 145 5/19/2025
2025.1139.706 140 5/19/2025
2025.1139.694 131 5/19/2025
2025.1139.679 134 5/19/2025
2025.1139.662 136 5/19/2025
2025.1139.638 131 5/19/2025
2025.1139.628 136 5/19/2025
2025.1139.626 136 5/19/2025
2025.1139.619 134 5/19/2025
2025.1139.605 134 5/19/2025
2025.1139.600 137 5/19/2025
2025.1139.583 132 5/19/2025
2025.1139.573 133 5/19/2025
2025.1139.564 132 5/19/2025
2025.1139.552 141 5/19/2025
2025.1139.543 137 5/19/2025
2025.1138.909 137 5/18/2025
2025.1136.150 198 5/16/2025
2025.1135.267 213 5/15/2025
2025.1135.143 214 5/15/2025
2025.1133.453 231 5/13/2025
2025.1133.351 224 5/13/2025
2025.1133.349 222 5/13/2025
2025.1133.347 229 5/13/2025
2025.1130.236 71 5/10/2025
2025.1129.831 104 5/9/2025
2025.1129.346 129 5/9/2025
2025.1129.345 126 5/9/2025
2025.1121.1370 148 5/1/2025
2025.1119.450 155 4/29/2025
2025.1119.436 152 4/29/2025
2025.1119.409 153 4/29/2025
2025.1119.388 154 4/29/2025
2025.1119.360 148 4/29/2025
2025.1119.328 169 4/29/2025
2025.1119.299 153 4/29/2025
2025.1119.287 154 4/29/2025
2025.1116.868 81 4/26/2025
2025.1116.841 77 4/26/2025
2025.1116.444 79 4/26/2025
2025.1115.498 124 4/25/2025
2025.1115.491 130 4/25/2025
2025.1100.365 177 4/10/2025
2025.1100.336 170 4/10/2025
2025.1100.331 176 4/10/2025
2025.1098.108 165 4/8/2025
2025.1093.291 177 4/3/2025
2025.1091.38 178 4/1/2025
2025.1091.26 178 4/1/2025
2025.1090.237 167 3/31/2025
2025.1089.1386 163 3/30/2025
2025.1083.515 412 3/24/2025
2025.1083.408 342 3/24/2025
2025.1083.398 341 3/24/2025
2025.1083.125 338 3/24/2025
2025.1080.41 149 3/21/2025
2025.1075.357 221 3/16/2025
2025.1073.332 141 3/14/2025
2025.1072.541 171 3/13/2025
2025.1072.536 152 3/13/2025
2025.1064.602 234 3/5/2025
2025.1064.546 215 3/5/2025
2025.1062.589 163 3/3/2025
2025.1061.513 118 3/2/2025
2025.1060.490 107 3/1/2025
2025.1059.134 115 2/28/2025
2025.1057.1020 109 2/26/2025
2025.1056.584 108 2/25/2025
2025.1050.282 133 2/19/2025
2025.1050.232 124 2/19/2025
2025.1049.55 141 2/18/2025
2025.1045.285 119 2/14/2025
2025.1043.288 108 2/12/2025
2025.1043.246 105 2/12/2025
2025.1043.197 115 2/12/2025
2025.1043.180 102 2/12/2025
2025.1043.108 103 2/12/2025
2025.1043.38 102 2/12/2025
2025.1043.27 103 2/12/2025
2025.1042.725 116 2/11/2025
2025.1042.690 107 2/11/2025
2025.1042.688 113 2/11/2025
2025.1042.418 104 2/11/2025
2025.1042.215 113 2/11/2025
2025.1042.203 114 2/11/2025
2025.1042.184 108 2/11/2025
2025.1042.142 117 2/11/2025
2025.1042.127 112 2/11/2025
2025.1037.1327 107 2/6/2025
2025.1036.280 114 2/5/2025
2025.1036.55 119 2/5/2025
2025.1035.1387 126 2/4/2025
2025.1031.111 123 1/31/2025
2025.1030.916 117 1/30/2025
2025.1030.895 117 1/30/2025
2025.1030.592 119 1/30/2025
2025.1029.664 100 1/29/2025
2025.1029.632 97 1/29/2025
2025.1029.596 102 1/29/2025
2025.1028.386 96 1/28/2025
2025.1025.723 99 1/25/2025
2025.1025.712 99 1/25/2025
2025.1019.913 106 1/19/2025
2025.1018.374 104 1/18/2025
2025.1018.285 137 1/18/2025
2025.1017.646 96 1/17/2025
2025.1017.379 130 1/17/2025
2025.1016.1370 104 1/16/2025
2025.1016.765 100 1/16/2025
2025.1016.712 101 1/16/2025
2025.1016.550 101 1/16/2025
2025.1016.541 103 1/16/2025
2025.1016.532 103 1/16/2025
2025.1016.325 98 1/16/2025
2025.1016.308 101 1/16/2025
2025.1016.296 95 1/16/2025
2025.1016.237 119 1/16/2025
2025.1016.184 96 1/16/2025
2025.1016.70 97 1/16/2025
2025.1016.6 99 1/16/2025
2025.1015.1438 99 1/16/2025
2025.1015.1437 95 1/16/2025
2025.1015.1411 95 1/15/2025
2025.1015.240 66 1/15/2025
2025.1015.223 58 1/15/2025
2025.1015.183 68 1/15/2025
2025.1014.1342 75 1/14/2025
2025.1014.273 86 1/14/2025
2025.1014.256 90 1/14/2025
2025.1012.440 92 1/12/2025
2025.1012.327 97 1/12/2025
2025.1012.279 97 1/12/2025
2025.1002.636 109 1/2/2025
2025.1001.1435 114 1/2/2025
2025.1001.1397 108 1/1/2025
2025.1001.770 114 1/1/2025
2025.1001.570 120 1/1/2025
2025.1001.558 108 1/1/2025
2025.1001.421 112 1/1/2025
2025.1001.390 114 1/1/2025
2025.1001.234 126 1/1/2025
2025.1001.123 119 1/1/2025
2024.1360.354 114 12/25/2024
2024.1360.60 104 12/25/2024
2024.1360.32 102 12/25/2024
2024.1358.450 105 12/23/2024
2024.1358.359 104 12/23/2024
2024.1358.312 101 12/23/2024
2024.1358.244 112 12/23/2024
2024.1358.120 97 12/23/2024
2024.1348.253 119 12/13/2024
2024.1345.1379 99 12/10/2024
2024.1345.506 98 12/10/2024
2024.1345.379 97 12/10/2024
2024.1345.145 101 12/10/2024
2024.1345.72 101 12/10/2024
2024.1345.69 97 12/10/2024
2024.1345.15 107 12/10/2024
2024.1344.1436 102 12/10/2024
2024.1344.600 108 12/9/2024
2024.1344.411 111 12/9/2024
2024.1340.379 114 12/5/2024
2024.1340.15 111 12/5/2024
2024.1338.786 115 12/3/2024
2024.1338.722 119 12/3/2024
2024.1338.697 111 12/3/2024
2024.1338.639 112 12/3/2024
2024.1338.541 111 12/3/2024
2024.1338.318 99 12/3/2024
2024.1338.298 103 12/3/2024
2024.1338.98 110 12/3/2024
2024.1337.756 111 12/2/2024
2024.1337.634 116 12/2/2024
2024.1337.625 104 12/2/2024
2024.1337.621 107 12/2/2024
2024.1337.594 105 12/2/2024
2024.1337.136 94 12/2/2024
2024.1336.793 117 12/1/2024
2024.1336.773 117 12/1/2024
2024.1336.305 106 12/1/2024
2024.1336.12 120 12/1/2024
2024.1335.1421 114 11/30/2024
2024.1335.1384 112 11/30/2024
2024.1334.1308 111 11/29/2024
2024.1334.764 105 11/29/2024
2024.1334.722 109 11/29/2024
2024.1330.185 109 11/25/2024
2024.1328.505 116 11/23/2024
2024.1328.470 105 11/23/2024
2024.1328.452 107 11/23/2024
2024.1323.910 119 11/18/2024
2024.1323.653 103 11/18/2024
2024.1323.185 102 11/18/2024
2024.1323.49 100 11/18/2024
2024.1322.714 103 11/17/2024
2024.1320.653 110 11/15/2024
2024.1320.619 103 11/15/2024
2024.1320.601 98 11/15/2024
2024.1320.159 106 11/15/2024
2024.1320.98 106 11/15/2024
2024.1320.2 111 11/15/2024
2024.1319.1431 109 11/15/2024
2024.1319.1335 111 11/14/2024
2024.1317.631 112 11/12/2024
2024.1316.330 121 11/11/2024
2024.1311.540 110 11/6/2024
2024.1306.225 109 11/1/2024
2024.1306.199 116 11/1/2024
2024.1306.171 105 11/1/2024
2024.1306.117 117 11/1/2024
2024.1305.506 103 10/31/2024
2024.1305.502 104 10/31/2024
2024.1305.465 104 10/31/2024
2024.1305.442 105 10/31/2024
2024.1305.399 104 10/31/2024
2024.1299.1070 111 10/25/2024
2024.1289.621 117 10/15/2024
2024.1289.338 108 10/15/2024
2024.1277.836 111 10/5/2024
2024.1277.711 112 10/3/2024
2024.1277.695 108 10/3/2024
2024.1270.409 122 9/26/2024
2024.1269.621 123 9/25/2024
2024.1269.619 113 9/25/2024
2024.1269.605 122 9/25/2024
2024.1242.282 125 8/29/2024
2024.1242.261 123 8/29/2024
2024.1242.233 129 8/29/2024
2024.1238.829 140 8/25/2024
2024.1238.327 144 8/25/2024
2024.1225.297 131 8/12/2024
2024.1205.140 128 7/23/2024
2024.1204.110 131 7/22/2024
2024.1204.62 123 7/22/2024
2024.1190.491 133 7/8/2024
2024.1177.305 129 6/25/2024
2024.1168.700 138 6/16/2024
2024.1168.649 133 6/16/2024
2024.1168.535 138 6/16/2024
2024.1167.643 130 6/15/2024
2024.1166.989 126 6/14/2024
2024.1166.818 127 6/14/2024
2024.1166.535 132 6/14/2024
2024.1166.422 122 6/14/2024
2024.1166.362 126 6/14/2024
2024.1166.360 129 6/14/2024
2024.1165.1212 126 6/13/2024
2024.1165.1160 126 6/13/2024
2024.1165.1019 129 6/13/2024
2024.1165.978 124 6/13/2024
2024.1165.920 122 6/13/2024
2024.1165.908 128 6/13/2024
2024.1165.873 126 6/13/2024
2024.1165.830 125 6/13/2024
2024.1165.806 128 6/13/2024
2024.1165.794 133 6/13/2024
2024.1165.792 133 6/13/2024
2024.1165.761 127 6/13/2024
2024.1165.743 123 6/13/2024
2024.1165.735 129 6/13/2024
2024.1165.713 127 6/13/2024
2024.1165.640 121 6/13/2024
2024.1165.574 128 6/13/2024
2024.1165.466 123 6/13/2024
2024.1165.417 125 6/13/2024
2024.1165.392 122 6/13/2024
2024.1164.341 114 6/12/2024
2024.1155.941 139 6/3/2024
2024.1140.783 141 5/19/2024
2024.1140.692 126 5/19/2024
2024.1140.673 132 5/19/2024
2024.1129.506 130 5/8/2024
2024.1128.831 145 5/7/2024
2024.1124.465 112 5/3/2024
2024.1123.1162 114 5/2/2024
2024.1123.1117 104 5/2/2024
2024.1123.1050 94 5/2/2024
2024.1122.352 132 5/1/2024
2024.1122.233 132 5/1/2024
2024.1115.1101 134 4/24/2024
2024.1115.1048 121 4/24/2024
2024.1115.932 122 4/24/2024
2024.1115.858 130 4/24/2024
2024.1115.665 131 4/24/2024
2024.1115.648 125 4/24/2024
2024.1115.591 133 4/24/2024
2024.1101.390 130 4/10/2024
2024.1100.741 137 4/9/2024
2024.1099.526 139 4/8/2024
2024.1099.466 133 4/8/2024
2024.1098.573 137 4/7/2024
2024.1095.977 136 4/4/2024
2024.1095.847 131 4/4/2024
2024.1095.604 133 4/4/2024
2024.1095.485 155 4/4/2024
2024.1094.930 130 4/3/2024
2024.1094.910 142 4/3/2024
2024.1094.387 143 4/3/2024
2024.1094.313 131 4/3/2024
2024.1093.520 132 4/2/2024
2024.1092.240 129 4/1/2024
2024.1089.1425 146 3/29/2024
2024.1089.983 136 3/29/2024
2024.1089.942 122 3/29/2024
2024.1089.2 141 3/29/2024
2024.1088.1343 133 3/28/2024
2024.1088.1139 137 3/28/2024
2024.1088.875 108 3/28/2024
2024.1088.700 123 3/28/2024
2024.1088.603 137 3/28/2024
2024.1088.590 141 3/28/2024
2024.1088.575 136 3/28/2024
2024.1088.561 136 3/28/2024
2024.1088.506 142 3/28/2024
2024.1088.18 139 3/28/2024
2024.1087.1181 147 3/27/2024
2024.1087.1173 137 3/27/2024
2024.1087.1143 144 3/27/2024
2024.1087.1108 125 3/27/2024
2024.1087.950 137 3/27/2024
2024.1087.939 123 3/27/2024
2024.1087.252 139 3/27/2024
2024.1070.736 139 3/10/2024
2024.1049.1437 144 2/19/2024
2024.1036.571 146 2/5/2024
2024.1036.508 132 2/5/2024
2024.1032.1204 133 2/1/2024
2024.1032.1133 128 2/1/2024
2024.1032.1122 151 2/1/2024
2024.1032.1071 127 2/1/2024
2024.1032.940 124 2/1/2024
2024.1031.912 124 1/31/2024
2024.1031.893 125 1/31/2024
2024.1031.851 115 1/31/2024
2024.1031.829 122 1/31/2024
2024.1031.386 119 1/31/2024
2024.1031.318 140 1/31/2024
2024.1017.460 147 1/17/2024
2024.1017.420 126 1/17/2024
2024.1017.163 130 1/17/2024
2024.1016.414 663 1/16/2024
2024.1012.167 147 1/12/2024
2024.1011.406 140 1/11/2024
2024.1010.315 154 1/10/2024
2023.1358.326 185 12/24/2023
2023.1351.473 147 12/17/2023
2023.1351.445 149 12/17/2023
2023.1351.432 158 12/17/2023
2023.1350.478 149 12/16/2023
2023.1344.600 164 12/10/2023
2023.1344.529 203 12/10/2023
2023.1339.582 161 12/5/2023
2023.1338.1072 168 12/4/2023
2023.1336.844 164 12/2/2023
2023.1335.378 163 12/1/2023
2023.1335.236 157 12/1/2023
2023.1335.203 143 12/1/2023