HashSet Konstruktor mit benutzerdefinierten IEqualityCompare definiert durch die lambda?

Derzeit die HashSet<T> Konstruktor, der erlaubt Ihnen zu definieren, Ihre Geschlechter-Vergleich, selbst ist der HashSet<T>(IEqualityComparer<T> comparer) Konstruktor.
Ich würde gerne die Definition dieses EqualityComparer als ein lambda.

Fand ich in diesem blog-post gemacht hat, dass eine Klasse, mit der Sie die Erstellung Ihrer comparer durch die lambda und dann versteckt der Bau dieser Klasse mit einem extention-Methode zu tun, zum Beispiel eine Ausnahme().

Nun möchte ich das gleiche tun, aber mit einem Konstruktor. Ist es möglich, erstellen Sie einen Konstruktor durch eine Erweiterung Methode? Oder gibt es eine andere Möglichkeit, die ich irgendwie schaffen, eine HashSet<T>(Func<T,T,int> comparer)?

--UPDATE--

Für Klarheit, dies ist (ein Ausschnitt) eines freehand-version von, was ich versuche zu erreichen:

HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
    srcPath.GetFiles(),
    new LambdaComparer<FileInfo>(
        (f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10))));

oder mehr ideal

HashSet<FileInfo> resultFiles = new HashSet<FileInfo>(
    srcPath.GetFiles(),
    (f1, f2) => f1.Name.SubString(10).Equals(f2.Name.SubString(10)));
  • Das blog-post ist gebrochen IMO - es erzeugt einen hashcode, gerade indem Sie den ursprünglichen hash-code, was dazu führt, hashes, die unvereinbar mit der Gleichheit Funktion. Ich habe kommentiert auf den blog.
Schreibe einen Kommentar