137 lines
4.4 KiB
C#
137 lines
4.4 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
#nullable enable
|
|
|
|
using System;
|
|
using System.Resources;
|
|
using System.Runtime.CompilerServices;
|
|
|
|
namespace Compat
|
|
{
|
|
internal partial class SR
|
|
{
|
|
// This method is used to decide if we need to append the exception message parameters to the message when calling SR.Format.
|
|
// by default it returns false.
|
|
// Native code generators can replace the value this returns based on user input at the time of native code generation.
|
|
// Marked as NoInlining because if this is used in an AoT compiled app that is not compiled into a single file, the user
|
|
// could compile each module with a different setting for this. We want to make sure there's a consistent behavior
|
|
// that doesn't depend on which native module this method got inlined into.
|
|
[MethodImpl(MethodImplOptions.NoInlining)]
|
|
private static bool UsingResourceKeys() => false;
|
|
|
|
internal static string GetResourceString(string resourceKey, string? defaultString = null)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return defaultString ?? resourceKey;
|
|
}
|
|
|
|
string? resourceString = null;
|
|
try
|
|
{
|
|
resourceString = ResourceManager.GetString(resourceKey);
|
|
}
|
|
catch (MissingManifestResourceException) { }
|
|
|
|
if (defaultString != null && resourceKey.Equals(resourceString))
|
|
{
|
|
return defaultString;
|
|
}
|
|
|
|
return resourceString!; // only null if missing resources
|
|
}
|
|
|
|
internal static string Format(string resourceFormat, object? p1)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1);
|
|
}
|
|
|
|
return string.Format(resourceFormat, p1);
|
|
}
|
|
|
|
internal static string Format(string resourceFormat, object? p1, object? p2)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1, p2);
|
|
}
|
|
|
|
return string.Format(resourceFormat, p1, p2);
|
|
}
|
|
|
|
internal static string Format(string resourceFormat, object? p1, object? p2, object? p3)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1, p2, p3);
|
|
}
|
|
|
|
return string.Format(resourceFormat, p1, p2, p3);
|
|
}
|
|
|
|
internal static string Format(string resourceFormat, params object?[]? args)
|
|
{
|
|
if (args != null)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return resourceFormat + ", " + string.Join(", ", args);
|
|
}
|
|
|
|
return string.Format(resourceFormat, args);
|
|
}
|
|
|
|
return resourceFormat;
|
|
}
|
|
|
|
internal static string Format(IFormatProvider? provider, string resourceFormat, object? p1)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1);
|
|
}
|
|
|
|
return string.Format(provider, resourceFormat, p1);
|
|
}
|
|
|
|
internal static string Format(IFormatProvider? provider, string resourceFormat, object? p1, object? p2)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1, p2);
|
|
}
|
|
|
|
return string.Format(provider, resourceFormat, p1, p2);
|
|
}
|
|
|
|
internal static string Format(IFormatProvider? provider, string resourceFormat, object? p1, object? p2, object? p3)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return string.Join(", ", resourceFormat, p1, p2, p3);
|
|
}
|
|
|
|
return string.Format(provider, resourceFormat, p1, p2, p3);
|
|
}
|
|
|
|
internal static string Format(IFormatProvider? provider, string resourceFormat, params object?[]? args)
|
|
{
|
|
if (args != null)
|
|
{
|
|
if (UsingResourceKeys())
|
|
{
|
|
return resourceFormat + ", " + string.Join(", ", args);
|
|
}
|
|
|
|
return string.Format(provider, resourceFormat, args);
|
|
}
|
|
|
|
return resourceFormat;
|
|
}
|
|
}
|
|
}
|