C #: Implementação ou alternativa para StrCmpLogicalW em shlwapi.dll

Para ordenação natural em meu aplicativo, atualmente P / Invoke uma função chamada StrCmpLogicalW em shlwapi.dll. Eu estava pensando em tentar executar o meu aplicativo em Mono, mas é claro que eu não posso ter este material P / Invoke (tanto quanto eu sei de qualquer maneira).

É possível ver a implementação desse método em algum lugar, ou há um bom, limpo e eficiente snippet C # que faz a mesma coisa?

Meu código atualmente é assim:

[SuppressUnmanagedCodeSecurity]
internal static class SafeNativeMethods
{
    [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
    public static extern int StrCmpLogicalW(string psz1, string psz2);
}

public class NaturalStringComparer : IComparer<string>
{
    private readonly int modifier = 1;

    public NaturalStringComparer() : this(false) {}
    public NaturalStringComparer(bool descending)
    {
        if (descending) modifier = -1;
    }

    public int Compare(string a, string b)
    {
        return SafeNativeMethods.StrCmpLogicalW(a ?? "", b ?? "") * modifier;
    }
}

Então, o que eu estou procurando é uma alternativa para a classe acima, que não usa uma função externa.

questionAnswers(4)

yourAnswerToTheQuestion