Ich verwende VS 2015. Wenn ich eine neue Klasse erstellen und versuchen, eine Schnittstelle mit der Verknüpfung "Strg +" zu implementieren. Zum Beispiel Klasse StarShip: ISTarShip und dann verwende ich "Strg +". und wählen Sie die Werkzeugschnittstelle aus. Es implementiert die Eigenschaften und Methoden in alphabetischer Reihenfolge! Gibt es einen einfachen Weg, um sie in der Reihenfolge zu implementieren, in der sie in der Schnittstelle sind, oder sollte ich es manuell tun? Ich habe immer noch keinen Nachschärfer, also ist das keine Option.So implementieren Sie Schnittstelleneigenschaften NICHT in alphabetischer Reihenfolge
7
A
Antwort
1
Die VS-Schnittstelle "implementieren" verwendet offensichtlich Reflektion, um den Code zu generieren, und in den Reflection-APIs gibt es nichts, das die Reihenfolge der von den verschiedenen Aufrufen zurückgegebenen Elemente garantiert. Wir haben keine Kontrolle über die Reflexionsordnung oder den VS-Code-Generator, der zum Implementieren von Schnittstellen verwendet wird, so dass wir die Funktionsweise nicht ändern können.
Grundsätzlich ist die einzige Option, eine VS-Erweiterung wie Nachschärfer zu verwenden, die die Funktionalität der Werkzeugschnittstelle ersetzt.
Aber warum ist das Verhalten in VS2013 anders? –
Wenn Sie die Mitglieder einer Schnittstelle aufzählen (zum Beispiel typeof (IList) .GetMembers()), sind die Ergebnisse ziemlich ungeordnet. Ich kann mir vorstellen, dass jemand dachte, dass es die alphabetische Reihenfolge der Dinge verbessern würde, anstatt die zufällige Reihenfolge, die du zuvor bekommen hast. Das oder sie hatten Probleme mit dem Code, der zuvor die Bestellung ausgeführt hatte, und ließen ihn zugunsten von alphabetisch fallen. Ich habe keine Verbindung zu den Entwicklern, also kann ich nicht mit Sicherheit sagen. – Corey
Wenn Sie VS2013 verwenden, um die Schnittstelle zu implementieren (Code generieren), werden die Methoden in derselben Reihenfolge angeordnet, wie sie in der Schnittstelle definiert sind. OP-Frage scheint zu sein, warum das gleiche nicht in VS2015 passiert, und wie, wenn möglich, kann es wie in VS2013 zum Beispiel sein. –