Finden Sie eine Klasse sein .cs-Datei im Projekt
Wie finde ich die .cs-Datei, die enthält einer Klasse in ein Projekt per code?
Ich es mir vorstellen könnte wie folgt Aussehen:
string pathToFoo = ClassFileFinder.FindClassPath(typeof(Foo));
- die OP geschrieben, eine pseudocode, was er sucht
- Tun eine Datei Suche ?
- Dieses problem geht weit über das hinaus, was ich gewohnt bin. Die einzige Möglichkeit die ich mir denken kann wird durch die .cs-Dateien in das Projekt und Scannen über diese als text an, auf der Suche nach der definition der Klasse, die Sie erwarten würden. Aber das ist nicht sehr elegant. Und ich vermute, nicht völlig narrensicher entweder.
- rechten klicken Sie auf die Zeile, und wählen Sie
Go to definition
- Was ist eigentlich Ihr Ziel?
- Ich habe angegeben, ich brauche es, um den Zugang "nach code".
- Können Sie uns erklären, aus welchem Grund Sie diese Funktionalität benötigen? Vielleicht gibt es eine andere Methode.
- Dann machen Sie eine visual studio-makro, das tut es, Ihr cs-Dateien werden dort nicht in die kompilierte exe-Datei, was wollen Sie erreichen?
- Sakthivel ich Schreibe eine client-server-collaboration-tool für ein Spiel-engine, wo die Projekte sind teilweise synchronisiert zwischen den beiden. Ich muss der client in der Lage sein, auf Anforderung eine bestimmte Klasse von Namen, und der server braucht zu liefern .cs-Klassendatei. Edit: Und natürlich nichts erhoben .exe-Datei in den Prozess, aber der Spiel-editor aufrufen konnte pseudocode, die ich gepostet.
- ich würde vorschlagen einen Klasse Ordner mit den Klassen und auf den client-Anfrage ruft Ihren className + ".cs" - Datei in diesem Ordner, ich habe nicht' wissen, ob es helfen kann, oder wenn es möglich ist, in Ihrer situation
- Ich war in dieser Richtung zu denken. Es hängt allerdings von der user (server-administrator) folgenden Anweisungen sorgfältig durch, und es schränkt die Art und Weise, in der die Benutzer-Struktur sein Projekt (zum Beispiel kann eine partielle Klassen und darf nicht mehrere Klassen in einer Datei). Eine Volltext-Suche durch alle .cs-Dateien unterstützen würde partiellen Klassen und multi-class-Dateien, aber ist nicht optimal (langsam). Edit: ich vermute, es ist die einzige praktikable option, wenn.
- 'server-client collaboration-tool'? Du meinst eine Art von source-control-system? Was ist das problem mit der Verwendung von, sagen wir, Git oder Mercurial?
- Es hat spezifische Funktionen für den editor/engine, Git fehlt. Git würde, Griff dieser speziellen Ausgabe (ich würde eher handle es mich in das tool aber).
- Ich habe geschrieben und getestet ClassFileFinder-Klasse basiert auf der Idee, sich durch den text von der Projekt-buchstäblich. Ich kann nicht post es denn noch warten müssen 10 Stunden. Wird die Klasse, wenn möglich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich geschrieben und getestet haben die Klasse basiert auf einigen Ideen, die ich hatte und fand in den Kommentaren. Es funktioniert auch Recht schnell und ich habe nicht gefunden keine Probleme mit ihm so weit.
}
Es macht keinen Sinn, was du versuchst zu tun. Sie werden nicht irgendwelche .cs-Datei in eine kompilierte ausführbare Datei am Ende.
Darüber hinaus müssen Sie möglicherweise andere Klasse Dateinamen als Klasse identifers deklariert in der Klasse-Definitionen, so dass ich bezweifle, einfache Datei-Suche wird auch nicht garantieren Sie finden die Datei im source-code. Also IMO nicht möglich.
Sind Sie versuchen, die Datei zu ändern bei der Laufzeit? Das ist nicht eine sehr gute Idee und ein riesiges Sicherheitsrisiko. Sie könnten versuchen immer mit System.Reflektor, um zu sehen, den Inhalt der Klasse zur Laufzeit. Auch, wenn Sie wollen, fügen Sie eine Funktion zu einer Klasse, die in einer Bibliothek, die Sie verwenden können, eine Erweiterung Methode.