using System.Runtime.CompilerServices;
using System.Globalization;
[InterpolatedStringHandler]
public ref struct HardcodedCultureHandler
private DefaultInterpolatedStringHandler _wrapped;
public HardcodedCultureHandler(int literalLength, int formattedCount)
_wrapped = new(literalLength, formattedCount, CultureInfo.GetCultureInfo("ar-SA"));
public void AppendLiteral(string s) => _wrapped.AppendLiteral(s);
public void AppendFormatted<T>(T t) => _wrapped.AppendFormatted(t);
public void AppendFormatted<T>(T t, string format) => _wrapped.AppendFormatted(t, format);
public string ToStringAndClear() => _wrapped.ToStringAndClear();
public static void Main()
DateTime? x = DateTime.Now.AddMonths(2);
Console.WriteLine(string.Create(CultureInfo.GetCultureInfo("ar-SA"), $"{x:dd MMM yyy}"));
Console.WriteLine(SameCodeAsStringCreate(CultureInfo.GetCultureInfo("ar-SA"), $"{x:dd MMM yyy}"));
Console.WriteLine(HardcodedCulture($"{x:dd MMM yyy}"));
private static string SameCodeAsStringCreate(IFormatProvider provider, [InterpolatedStringHandlerArgument(nameof(provider))] DefaultInterpolatedStringHandler interpolatedString) =>
interpolatedString.ToStringAndClear();
private static string HardcodedCulture(HardcodedCultureHandler interpolatedString) => interpolatedString.ToStringAndClear();