In der gleichen Lösung habe ich zwei Projekte: P1 und P2. Wie kann ich eine Klasse von P1 in P2 verwenden?
c#
visual-studio
Strider007
quelle
quelle
Antworten:
Fügen Sie einfach einen Verweis auf P1 von P2 hinzu
quelle
Beachten Sie, dass die Typen in P1, auf die Sie direkt zugreifen möchten, eine ausreichende Zugriffsebene haben müssen. In der Regel bedeutet dies, dass sie veröffentlicht werden müssen.
quelle
Paul Ruane hat recht, ich habe gerade versucht, das Projekt aufzubauen. Ich habe gerade eine ganze SLN erstellt, um zu testen, ob es funktioniert.
Ich habe das in VC # VS2008 gemacht
<< (Ich helfe nur anderen Leuten, die dies lesen, mit () Kommentaren)
Schritt 1:
Machen Sie eine Lösung namens DoubleProject
Schritt 2:
Projekt in Lösung mit dem Namen DoubleProjectTwo erstellen (dazu die Lösungsdatei auswählen, Rechtsklick -> Hinzufügen -> Neues Projekt)
Ich habe jetzt zwei Projekte in der gleichen Lösung
Schritt 3:
Wie Paul Ruane sagte. Gehen Sie zu Referenzen im Lösungs-Explorer (wenn geschlossen, befindet es sich auf der Registerkarte Ansicht des Compilers). DoubleProjectTwo ist dasjenige, das Funktionen / Methoden von DoubleProject benötigt, also in DoubleProjectTwo mit der rechten Maustaste dort -> Hinzufügen -> Projekte -> DoubleProject.
Schritt 4:
Schritt 5:
Das sollte den Trick machen
Hoffe das hilft
EDIT ::: whoops hat den Methodenaufruf vergessen, um den String tatsächlich zu ändern, mach nicht dasselbe :)
quelle
Allzu oft stellt ein neuer Entwickler diese einfache Frage, die speziell bei Visual Studio-IDEs häufig auftritt. Nur wenige Menschen beantworten die spezifische Frage und kritisieren die Frage häufig oder geben "Vermutungen" für Lösungen an, die die allgemeinen Probleme nicht beantworten. Das erste häufig auftretende Problem ist, dass Sie mit der IDE neue Projekte erstellen, anstatt der vorhandenen Lösung neue Dateien (.java, .py, .cpp, .c) hinzuzufügen (standardmäßig wird eine neue Lösung erstellt), es sei denn, Sie ändern den Projektnamen und zur aktuellen Lösung hinzufügen. Dieses Problem tritt bei Python-, Java-, C # -, C ++ - und C-Projektordnern auf.
Dies ist nicht der Fall, wenn Sie ein anderes Projekt mit den Befehlen new> project> project type der IDE hinzufügen. Das Problem hierbei ist, dass das neue Projekt in einem anderen Verzeichnis als die vorhandenen Client- oder Benutzeroberflächen-Codedateien gespeichert wird. Um eine neue "Datei" im selben Projektbereich anstatt in einem neuen Projekt zu erstellen, muss der Anfänger Folgendes tun, was Microsoft nicht für Sie tut und Sie sogar von dem intuitiv Offensichtlichen in die Irre führt.
JETZT funktionieren die Codeempfehlungen zum Importieren von Bibliotheken oder zum Verwenden von Namespaces wie in den obigen Kommentaren beschrieben, und Sie müssen weder Pfadanweisungen noch Lösungspfade und Lösungsnamen ändern, die Microsoft nicht einfach ändern lässt (dh Sie können die ändern Dateinamen oder Projektnamen, aber die IDE ändert den Projektpfad oder die Lösungspfadnamen nicht automatisch.
Das Folgende ist ein Python-Beispiel, funktioniert jedoch ähnlich für C #, Java oder C / C ++ unter Verwendung der Includes, Namespaces oder unter Verwendung von Codebefehlen, die für jede Sprache geeignet sind, um Code in anderen Klassen / Projekten im SAME DIRECTORY SPACE zu finden.
Die Anwendungsdatei "Hallo Welt", die aus anderen Codedateien im selben Verzeichnis importiert wird.
Beachten Sie, dass die Python-Leerzeichen-Trennzeichen in diesem Stackoverflow-Kommentareditor nicht korrekt platziert werden:
Die Bibliotheksdatei oder "Fassadendatei" mit Klassen, Methoden oder Funktionen, die Sie importieren möchten.
JETZT, wie lösen Sie das Chaos, in das Sie die IDE führt? Um Code aus einer anderen Datei im selben Verzeichnisbereich zu importieren, fügen Sie einen Verweis darauf hinzu.
OK, nachdem Sie dieses Problem gelöst haben, wie können Sie wirklich zwei separate Projekte im selben Lösungsbereich miteinander verbinden?
Microsoft muss dieses Problem wirklich beheben, damit Sie intuitiv erstellen können, was die meisten Benutzer als neue Dateien in denselben Verzeichnissen erstellen möchten, und Lösungen entfernen können, indem Sie sie auswählen und aus der IDE löschen. Anfänger sind so frustriert über Verzeichnispfadanweisungen, die für erfahrene Entwickler so flexibel, für neue Entwickler jedoch in ihren Standardeinstellungen so unfair sind.
Ich hoffe, dies hilft Ihnen wirklich neuen Leuten und verhindert, dass erfahrene Entwickler Ihnen die falschen Antworten geben, die für Sie nicht funktionieren. Sie gehen davon aus, dass Sie die Pfadanweisungen bereits verstehen und nur den richtigen Code eingeben möchten. Aus diesem Grund versucht der Tunnel, Ihren Code zu korrigieren, hilft Ihnen jedoch nicht, das Problem zu beheben. Dies ist wahrscheinlich das häufigste Problem, das im Stackoverflow ständig mit falschen Antworten beschrieben wird, die für neue Programmierer nicht funktionieren.
quelle
Der erste Schritt besteht darin, P2 als Referenz P1 zu verwenden, indem Folgendes ausgeführt wird
Als nächstes müssen Sie sicherstellen, dass die Klassen in P1 für P2 zugänglich sind. Der einfachste Weg ist, sie zu machen
public
.Jetzt sollten Sie sie in P2 über ihren vollständig qualifizierten Namen verwenden können. Angenommen, der Namespace von P1 ist Project1, dann würde Folgendes funktionieren
Der bevorzugte Weg ist jedoch, eine Verwendung für hinzuzufügen,
Project1
damit Sie die Typen ohne Qualifikation verwenden könnenquelle
Wenn Sie zwei Projekte in einem Lösungsordner haben. Fügen Sie einfach die Referenz des Projekts in einen anderen ein. Verwenden Sie den Namespace, um die Klassen abzurufen. Beim Erstellen des Objekts dafür die erforderliche Klasse. Rufen Sie die gewünschte Methode auf.
Erstes Projekt:
Fügen Sie hier einen Verweis auf das zweite Projekt hinzu
Zweites Projekt:
quelle
Machen Sie im Projekt P1 die Klasse öffentlich (falls noch nicht geschehen). Fügen Sie dann P2 eine Projektreferenz hinzu (anstelle einer Dateireferenz, ein Fehler, auf den ich gelegentlich gestoßen bin). Fügen Sie an der richtigen Stelle eine using-Anweisung in P2 hinzu und beginnen Sie mit der Verwendung der Klasse ab P1.
(Um dies zu erwähnen: Die Alternative zur Veröffentlichung der Klasse wäre, P2 zu einem Freund von P1 zu machen. Dies ist jedoch wahrscheinlich nicht die Antwort, nach der Sie suchen, da dies einige Konsequenzen hätte. Halten Sie sich also an den obigen Vorschlag.)
quelle
Angenommen, Ihre Klasse in Projekt 2 heißt MyClass.
Verweisen Sie dann zuerst auf Ihr Projekt 2 unter Verweise in Projekt 1
Wenn Sie also auf diese Klasse verweisen möchten, geben Sie project2Class ein. Stellen Sie außerdem sicher, dass die Klasse auch öffentlich ist.
quelle
Ich hatte ein Problem mit verschiedenen Ziel-Frameworks.
Ich habe alles richtig gemacht, konnte aber die Referenz in P2 einfach nicht verwenden. Nachdem ich das gleiche Ziel-Framework für P1 und P2 festgelegt hatte, funktionierte es wie ein Zauber.
Hoffe es wird jemandem helfen
quelle
The name ... does not exist in the current context. Cannot resolve symbol ...
bis ich die Ziel-Frameworks der Projekte entsprechend geändert habe. (Klicken Sie mit der rechten Maustaste auf das Projekt und gehen Sie zuProject -> Properties -> Target framework
, um dies zu ändern.)