C #: реализация или альтернатива StrCmpLogicalW в shlwapi.dll

Для естественной сортировки в моем приложении я в настоящее время запускаю функцию P / Invoke под названием StrCmpLogicalW в shlwapi.dll. Я думал о попытке запустить мое приложение под Mono, но тогда, конечно, я могуу меня нет такого P / Invoke (насколько я знаю в любом случае).

Можно ли где-нибудь увидеть реализацию этого метода, или есть хороший, чистый и эффективный фрагмент C #, который делает то же самое?

Мой код в настоящее время выглядит так:

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

public class NaturalStringComparer : IComparer
{
    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;
    }
}

Итак, что яm ищет альтернативу вышеупомянутому классу, который неиспользовать внешнюю функцию.

Ответы на вопрос(4)

Ваш ответ на вопрос