Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enabling Trimming #1458

Merged
merged 1 commit into from
Feb 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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