Switch a stringy

Ahojte,
casto sa stava, ze by sa mi zislo v switch staemente alebo vyraze pouzit stringy (napriklad pre mime-type, koncovku suboru,… ale aj ine).

Problem ale je, ze v istych podmienkach seitch case vyhodnoti rozne stringy ako rovnake (nemecky windows a ostre s vs. ss) a tiez je tu mierny rozdiel v permace.

Mojim cielom je dosiahnut porovanavie stringov vo switchi pomocou StringComparison.Ordinal.
Nemate nejaky trik ako to vyriesit?

Ja som to skusal, cez vlastny typ, generuje to presne taky kod ako chcem, ale moc sa mi to nepaci.

    public struct InvariantString : IEquatable<InvariantString>, IEquatable<string>
    {
        public string Value
        {
            get;
        }

        public InvariantString(string value)
        {
            this.Value = value;
        }

        public bool Equals(InvariantString other)
        {
            return string.Equals(this.Value, other.Value, StringComparison.Ordinal);
        }

        public bool Equals(string other)
        {
            return string.Equals(this.Value, other, StringComparison.Ordinal);
        }

        public static bool operator ==(InvariantString v1, string v2)
        {
            return string.Equals(v1.Value, v2, StringComparison.Ordinal);
        }       
    }
       public int Example(string value)
        {
            return new InvariantString(value) switch
            {
                InvariantString str when str == "Hello" => 1,
                InvariantString str when str == "world" => 2,
                _ => -1
            };
        }

Nebolo by lepsie, nejak normalizovat cez String.Normalize Method (System) | Microsoft Docs uz vtedy ked to vstupuje do switchu?
Daj failing example.

Neviem ci normalizacia pomoze.

Mozno som uz defomovany bezpecnostou a vykonom a mozno to riesim aj zbytocne.

Falling exmaple by malo byt ".ssh" == ".ßh", co by malo dat v nemeckej kulture true, no nezreplikoval som to.

Takze to asi rieism zbytocne.

oni su equal len pri StringComparison.InvariantCulture vid C# Online Compiler | .NET Fiddle
== pouziva ordinal compare vid runtime/String.Comparison.cs at 57bfe474518ab5b7cfe6bf7424a79ce3af9d6657 · dotnet/runtime · GitHub
takze asi si len prehnane deformovany:)

Aha, ja som bol v tom, ze == a string.Equals(string a, string b) pouziva current culture.

Takze moj problem je vyrieseny.