Skip to content

Commit

Permalink
enabling trimming (#1458)
Browse files Browse the repository at this point in the history
fixes #1446
  • Loading branch information
SimonCropp authored Feb 25, 2024
1 parent 8ccf401 commit cefab62
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
[assembly: System.Resources.NeutralResourcesLanguage("en")]
[assembly: System.Reflection.AssemblyMetadata("IsTrimmable", "True")]
[assembly: System.Resources.NeutralResourcesLanguage("en")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(@"Humanizer.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100F9104F5F9BDB168AE140366EB1CD84C469B020EA3423D5D29996D5214CE2BD9B7C0BA3EAD1CA545C4399668AB8911E61CC1CC83C7DF6D50FD6B781365B467E65173F40A11C957D27C5AA0CB0F8DA9C91C988203CC8AEF1468C74A472839D0FD870DA8D13A4DC6B3AAFDAF0384D8E18E393C613D88BF02A64467A119902204FCC")]
[assembly: System.Runtime.Versioning.TargetFramework(".NETCoreApp,Version=v8.0", FrameworkDisplayName=".NET 8.0")]
namespace Humanizer
Expand Down Expand Up @@ -244,16 +245,16 @@ namespace Humanizer
public static class EnumDehumanizeExtensions
{
public static System.Enum DehumanizeTo(this string input, System.Type targetEnum, Humanizer.OnNoMatch onNoMatch = 0) { }
public static TTargetEnum DehumanizeTo<TTargetEnum>(this string input)
public static TTargetEnum DehumanizeTo<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)] TTargetEnum>(this string input)
where TTargetEnum : struct, System.Enum { }
public static TTargetEnum? DehumanizeTo<TTargetEnum>(this string input, Humanizer.OnNoMatch onNoMatch = 0)
public static TTargetEnum? DehumanizeTo<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)] TTargetEnum>(this string input, Humanizer.OnNoMatch onNoMatch = 0)
where TTargetEnum : struct, System.Enum { }
}
public static class EnumHumanizeExtensions
{
public static string Humanize<T>(this T input)
public static string Humanize<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)] T>(this T input)
where T : struct, System.Enum { }
public static string Humanize<T>(this T input, Humanizer.LetterCasing casing)
public static string Humanize<[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields)] T>(this T input, Humanizer.LetterCasing casing)
where T : struct, System.Enum { }
}
public enum GrammaticalCase
Expand Down
2 changes: 1 addition & 1 deletion src/Humanizer/EnumCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Humanizer;

static class EnumCache<T>
static class EnumCache<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>
where T : struct, Enum
{
static (T Zero, FrozenDictionary<T, string> Humanized, Dictionary<string, T> Dehumanized, FrozenSet<T> Values, bool IsBitFieldEnum) info;
Expand Down
6 changes: 3 additions & 3 deletions src/Humanizer/EnumDehumanizeExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static class EnumDehumanizeExtensions
/// <param name="input">The string to be converted</param>
/// <exception cref="ArgumentException">If TTargetEnum is not an enum</exception>
/// <exception cref="NoMatchFoundException">Couldn't find any enum member that matches the string</exception>
public static TTargetEnum DehumanizeTo<TTargetEnum>(this string input)
public static TTargetEnum DehumanizeTo<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] TTargetEnum>(this string input)
where TTargetEnum : struct, Enum =>
DehumanizeToPrivate<TTargetEnum>(input, OnNoMatch.ThrowsException)!.Value;

Expand All @@ -23,7 +23,7 @@ public static TTargetEnum DehumanizeTo<TTargetEnum>(this string input)
/// <param name="input">The string to be converted</param>
/// <exception cref="ArgumentException">If TTargetEnum is not an enum</exception>
/// <exception cref="NoMatchFoundException">Couldn't find any enum member that matches the string</exception>
public static TTargetEnum? DehumanizeTo<TTargetEnum>(this string input, OnNoMatch onNoMatch = OnNoMatch.ThrowsException)
public static TTargetEnum? DehumanizeTo<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] TTargetEnum>(this string input, OnNoMatch onNoMatch = OnNoMatch.ThrowsException)
where TTargetEnum : struct, Enum =>
DehumanizeToPrivate<TTargetEnum>(input, onNoMatch);

Expand Down Expand Up @@ -51,7 +51,7 @@ public static Enum DehumanizeTo(this string input, Type targetEnum, OnNoMatch on
}
}

static T? DehumanizeToPrivate<T>(string input, OnNoMatch onNoMatch)
static T? DehumanizeToPrivate<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(string input, OnNoMatch onNoMatch)
where T : struct, Enum
{
var dehumanized = EnumCache<T>.GetDehumanized();
Expand Down
4 changes: 2 additions & 2 deletions src/Humanizer/EnumHumanizeExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public static class EnumHumanizeExtensions
/// Turns an enum member into a human readable string; e.g. AnonymousUser -> Anonymous user. It also honors DescriptionAttribute data annotation
/// </summary>
/// <param name="input">The enum member to be humanized</param>
public static string Humanize<T>(this T input)
public static string Humanize<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(this T input)
where T : struct, Enum
{
var (zero, humanized, values) = EnumCache<T>.GetInfo();
Expand All @@ -31,7 +31,7 @@ public static string Humanize<T>(this T input)
/// </summary>
/// <param name="input">The enum member to be humanized</param>
/// <param name="casing">The casing to use for humanizing the enum member</param>
public static string Humanize<T>(this T input, LetterCasing casing)
public static string Humanize<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] T>(this T input, LetterCasing casing)
where T : struct, Enum
{
var humanizedEnum = Humanize(input);
Expand Down
3 changes: 2 additions & 1 deletion src/Humanizer/Humanizer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
<Product>Humanizer ($(TargetFramework))</Product>
<GenerateDocumentationFile Condition=" '$(Configuration)' == 'Release' ">true</GenerateDocumentationFile>
<DebugType Condition=" '$(BuildingForLiveUnitTesting)' != 'true' ">embedded</DebugType>
<NoWarn>CS1573;CS1591</NoWarn>
<NoWarn>CS1573;CS1591</NoWarn>
<IsTrimmable>true</IsTrimmable>
</PropertyGroup>
<ItemGroup>
<Using Remove="System.Net.Http" />
Expand Down

0 comments on commit cefab62

Please sign in to comment.