Do naturalnego sortowania w mojej aplikacji I aktualnie P/Wywołanie funkcji o nazwie StrCmpLogicalW w shlwapi.dll. Myślałem o próbie uruchomienia aplikacji pod Mono, ale oczywiście nie mogę mieć tego P/Invoke (o ile wiem).C#: Implementacja lub alternatywa dla StrCmpLogicalW w shlwapi.dll
Czy jest możliwe sprawdzenie wdrożenia tej metody gdzieś, czy jest tam dobry, czysty i wydajny fragment C#, który robi to samo?
Moje kodu aktualnie wygląda tak:
[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;
}
}
Więc, co szukam jest alternatywą dla powyższej klasy, która nie używa extern funkcji.
Właśnie znalazłem ten [blogu na naturalnych sortowania] (http://www.interact-sw.co.uk/iangblog/2007/ 12/13/sortowanie naturalne) w języku C#. Czy to ma jakiekolwiek znaczenie? W odpowiedzi na twój komentarz - sam nie analizowałem go szczegółowo, wyglądało to obiecująco. Muszą istnieć inne C# implementacje sortowania naturalnego, być może po prostu trzeba je znaleźć i profilować? – ChrisF
Właśnie skończyłem czytać: P Wydaje się, że robi to, co myślę, że powinno, ale wydaje się również dość nieskuteczne ... Tak naprawdę nie wiem ... hehe. – Svish