Dans la même solution, j’ai deux projets: P1 et P2. Comment puis-je utiliser une classe de P1 dans P2?
Ajoutez simplement la référence à P1 de P2
Notez que les types dans P1 auxquels vous souhaitez accéder directement doivent avoir un niveau d’access suffisant: cela signifie généralement qu’ils doivent être rendus publics.
Paul Ruane a raison, je viens d’essayer moi-même de construire le projet. Je viens de faire une SLN complète pour tester si cela fonctionnait.
Je l’ai fait dans VC # VS2008
<< (Juste aider les autres personnes qui lisent ceci avec () commentaires)
Étape 1:
Faire une solution appelée DoubleProject
Étape 2:
Make Project in solution nommé DoubleProjectTwo (pour ce faire, sélectionnez le fichier de solution, cliquez avec le bouton droit -> Ajouter -> Nouveau projet)
J’ai maintenant deux projets dans la même solution
Étape 3:
Comme Paul Ruane l’a déclaré. aller aux références dans l’explorateur de solution (s’il est fermé, il est dans l’onglet de vue du compilateur). DoubleProjectTwo est celui qui nécessite des fonctions / méthodes de DoubleProject. Dans DoubleProjectTwo, il y a donc une référence à la souris droite -> Ajouter -> Projets -> DoubleProject.
Étape 4:
Inclure la directive pour l’espace de noms:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using DoubleProject; <------------------------------------------ namespace DoubleProjectTwo { class ClassB { public string textB = "I am in Class B Project Two"; ClassA classA = new ClassA(); public void read() { textB = classA.read(); } } }
Step5:
Faire quelque chose me montrer la preuve des résultats:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DoubleProject { public class ClassA //<---------- PUBLIC class { private const string textA = "I am in Class A Project One"; public string read() { return textA; } } }
Le principal
using System; using System.Collections.Generic; using System.Linq; using System.Text; using DoubleProjectTwo; //<----- to use ClassB in the main namespace DoubleProject { class Program { static void Main(string[] args) { ClassB foo = new ClassB(); Console.WriteLine(foo.textB); Console.ReadLine(); } } }
Cela devrait faire l'affaire
J'espère que cela t'aides
EDIT ::: whoops a oublié l'appel à la méthode pour changer la chaîne, ne faites pas la même chose 🙂
La première étape consiste à faire la référence P2 P1 en procédant comme suit
Ensuite, vous devrez vous assurer que les classes de P1 sont accessibles à P2. Le plus simple est de les rendre public
.
public class MyType { ... }
Vous devriez maintenant pouvoir les utiliser dans P2 via leur nom complet. En supposant que l’espace de noms de P1 est Project1, alors ce qui suit fonctionnerait
Project1.MyType obj = new Project1.MyType();
La méthode préférée consiste à append une utilisation pour Project1
afin de pouvoir utiliser les types sans qualification.
using Project1; ... public void Example() { MyType obj = new MyType(); }
Trop souvent, un nouveau développeur pose cette question simple, qui est un problème commun avec les IDE de Visual Studio. Peu de personnes répondent à la question spécifique et critiquent souvent la question ou donnent des «suppositions» aux solutions qui ne répondent pas aux problèmes communs. Le premier problème commun est que l’EDI vous amène à créer de nouveaux projets plutôt qu’à append de nouveaux fichiers (.java, .py, .cpp, .c) à la solution existante (par défaut, il crée une nouvelle solution) à moins de changer le nom du projet et append à la solution actuelle. Ce problème se produit pour les dossiers de projet Python, java, c #, C ++ et C.
Le nouveau développeur sélectionnant “nouveau> projet> nom du projet et modifiant le répertoire de la solution pour” utiliser la même solution “crée toujours un nouveau” projet “dans le même espace de solution, mais pas dans le même répertoire que le fichier ou la commande d’interface utilisateur actuelle. fichier de ligne qui pose toujours des problèmes avec les erreurs “package not found” lors de la construction et de l’exécution du projet ou de la solution. C’est pourquoi les suggestions de codage ci-dessus pour importer des packages, classes, méthodes et fonctions ne fonctionnent que (et ne répondent donc pas à la question) ) lorsque le fichier “library” ou le “fichier comportement distinct” se trouve non seulement dans le même chemin de répertoire de la solution, mais également dans le même espace de répertoire de l’application “interface utilisateur” ou “shell de commande”. projet en utilisant le nouveau projet> projet> commandes de type de projet de l’EDI Le problème est que le nouveau projet est stocké dans un répertoire différent de celui des fichiers de code d’interface client ou utilisateur existants Pour créer un nouveau fichier dans le même espace projet e Un nouveau projet que le débutant doit faire ce qui suit, que Microsoft ne fera pas pour vous et vous induit même en erreur par rapport aux évidences intuitives par défaut.
MAINTENANT, les recommandations de code pour importer des bibliothèques ou utiliser des espaces de noms fonctionneront comme décrit dans les commentaires ci-dessus et vous n’avez pas à modifier les instructions de chemin ou à changer les chemins de solutions et les noms de solutions que Microsoft ne vous laissera pas changer facilement. noms de fichiers ou noms de projets, mais l’EDI ne changera pas automatiquement le chemin du projet ou les noms de chemin de la solution).
L’exemple suivant est un exemple Python mais fonctionne de manière similaire pour C #, java ou C / C ++ en utilisant les commandes includes, namespaces ou using code correspondant à chaque langue pour rechercher du code dans d’autres classes / projets du SAME DIRECTORY SPACE.
Le fichier d’application “hello world” importé depuis d’autres fichiers de code dans le même répertoire.
Notez que les délimiteurs d’espace blanc python ne vont pas dans l’espace correctement dans cet éditeur de commentaires stackoverflow:
print ("test") from CIXMPythonFacade import ClassA c1=ClassA c1.methodA() from CIXMPythonFacade import functionA functionA() class ClassName(object): def __init__(object, parameter): object.parameter = value
Le fichier de bibliothèque ou fichier “façade” contenant les classes, méthodes ou fonctions que vous souhaitez importer.
class class1(object): """description of class""" class ClassA(object): print ("test2") def methodA(): print ("test3") def functionA (): print ("test4") return (0) pass
Maintenant, comment résolvez-vous le désordre dans lequel l’EDI vous mène? Pour importer du code à partir d’un autre fichier dans le même espace de répertoire, vous ajoutez une référence à celui-ci.
OK, maintenant que vous avez résolu ce problème, comment reliez-vous vraiment deux projets distincts dans le même espace de solution?
Microsoft a vraiment besoin de résoudre ces problèmes afin de créer intuitivement ce que la plupart des gens veulent créer en tant que nouveaux fichiers dans les mêmes répertoires et supprimer les solutions en les sélectionnant et en les supprimant de l’EDI. Les débutants sont tellement frustrés par les instructions de chemin de répertoire si flexibles pour les développeurs expérimentés, mais tellement injustes pour les nouveaux développeurs dans leurs parameters par défaut.
J’espère que cela vous aidera vraiment les nouveaux et empêche les développeurs chevronnés de vous donner les mauvaises réponses qui ne fonctionnent pas pour vous. Ils supposent que vous comprenez déjà les instructions de chemin et que vous souhaitez simplement saisir le bon code … ce qui explique également pourquoi le tunnel tente de corriger votre code mais ne vous aide pas à résoudre le problème. Il s’agit probablement du problème le plus fréquemment décrit en permanence sur stackoverflow avec des réponses erronées qui ne fonctionnent pas pour les nouveaux programmeurs.
Dans le projet P1, rendre la classe publique (si ce n’est déjà fait). Ajoutez ensuite une référence de projet (plutôt qu’une référence de fichier, une erreur que j’ai rencontrée occasionnellement) à P2. Ajoutez une instruction using dans P2 au bon endroit et commencez à utiliser la classe de P1.
(Pour mentionner ceci: l’alternative à rendre la classe publique serait de faire de P2 un ami de P1. Cependant, il est peu probable que ce soit la réponse que vous recherchez, car cela aurait des conséquences. Alors, restz sur la suggestion ci-dessus.)
Disons que votre classe dans le projet 2 s’appelle MyClass.
Evidemment, faites d’abord référence à votre projet 2 sous références dans le projet 1 puis
using namespaceOfProject2; // for the class calling bit: namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();
Donc, chaque fois que vous voulez référencer cette classe, vous tapez project2Class. De plus, assurez-vous que cette classe est aussi publique.
Si vous avez deux projets dans un seul dossier de solution. Ajoutez simplement la référence du projet dans another.using à l’espace de noms pour obtenir les classes. Lors de la création de l’object pour cette classe requirejse. Appelez la méthode que vous voulez.
FirstProject:
class FirstClass() { public ssortingng Name() { return "James"; } }
Ajouter ici une référence au deuxième projet
SecondProject:
class SeccondClass { FirstProject.FirstClass obj=new FirstProject.FirstClass(); obj.Name(); }