W tym samym rozwiązaniu mam dwa projekty: P1 i P2. Jak mogę skorzystać z klasy P1 w P2?
c#
visual-studio
Strider007
źródło
źródło
Odpowiedzi:
Po prostu dodaj odniesienie do P1 z P2
źródło
Zwróć uwagę, że typy w P1, do których chcesz uzyskać bezpośredni dostęp, muszą mieć wystarczający poziom dostępu: zazwyczaj oznacza to, że muszą być upublicznione.
źródło
Paul Ruane ma rację, właśnie próbowałem samodzielnie zbudować projekt. Właśnie stworzyłem cały SLN, aby sprawdzić, czy działa.
Zrobiłem to w VC # VS2008
<< (Pomaganie tylko innym osobom, które to czytają, dodając () komentarze)
Krok 1:
Stwórz rozwiązanie o nazwie DoubleProject
Krok 2:
Utwórz projekt w rozwiązaniu o nazwie DoubleProjectTwo (w tym celu wybierz plik rozwiązania, kliknij prawym przyciskiem myszy -> Dodaj -> Nowy projekt)
Mam teraz dwa projekty w tym samym rozwiązaniu
Krok 3:
Jak stwierdził Paul Ruane. przejdź do odniesień w eksploratorze rozwiązań (jeśli jest zamknięty, znajduje się na karcie widoku kompilatora). DoubleProjectTwo jest tym, który potrzebuje funkcji / metod DoubleProject, więc w DoubleProjectTwo prawym przyciskiem myszy odnośnik -> Dodaj -> Projekty -> DoubleProject.
Krok 4:
Krok 5:
TO POWINNO załatwić sprawę
Mam nadzieję że to pomoże
EDYCJA ::: ups zapomniałem wywołania metody, aby faktycznie zmienić ciąg, nie rób tego samego :)
źródło
Zbyt często nowy programista zadaje to proste pytanie, które jest częstym problemem, szczególnie w środowisku IDE programu Visual Studio. Niewiele osób odpowiada na konkretne pytanie i często poddaje je krytyce lub „domysły” rozwiązań, które nie odpowiadają na typowe problemy. Pierwszym częstym problemem jest to, że IDE prowadzi cię do tworzenia nowych projektów, zamiast dodawać nowe pliki (.java, .py, .cpp, .c) do istniejącego rozwiązania (domyślnie tworzy nowe rozwiązanie), chyba że zmienisz nazwę projektu i dodaj do obecnego rozwiązania. Ten problem występuje w przypadku folderów projektów w językach Python, Java, C #, C ++ i C.
Nie dzieje się tak, gdy dodajesz inny projekt za pomocą nowych poleceń> projekt> typ projektu w środowisku IDE. Problem polega na tym, że nowy projekt jest przechowywany w innym katalogu niż istniejące pliki kodu interfejsu klienta lub użytkownika. Aby utworzyć nowy „plik” w tej samej przestrzeni projektu, a nie w nowym projekcie, początkujący musi wykonać następujące czynności, których Microsoft nie zrobi za Ciebie, a nawet odwiedzie Cię od intuicyjnie oczywistych, domyślnych.
TERAZ zalecenia dotyczące kodu dotyczące importowania bibliotek lub korzystania z przestrzeni nazw będą działać zgodnie z opisem w komentarzach powyżej i nie musisz zmieniać instrukcji ścieżki ani zmieniać ścieżek rozwiązań i nazw rozwiązań, których Microsoft nie pozwoli ci łatwo zmienić (tj. Możesz zmienić nazwy plików lub nazwy projektów, ale IDE nie zmieni automatycznie ścieżki projektu ani nazw ścieżek rozwiązań).
Poniżej znajduje się przykład Pythona, ale działa podobnie dla C #, java lub C / C ++ przy użyciu dołączeń, przestrzeni nazw lub przy użyciu poleceń kodowych odpowiednich dla każdego języka, aby znaleźć kod w innych klasach / projektach w TYM SAMYM KATALOGU.
Plik aplikacji „hello world” importujący z innych plików kodu w tym samym katalogu.
Zwróć uwagę, że ograniczniki spacji w Pythonie nie będą poprawnie umieszczane w tym edytorze komentarzy typu stackoverflow:
Plik biblioteki lub plik „fasady” zawierający klasy, metody lub funkcje, które chcesz zaimportować.
TERAZ, jak właściwie rozwiązać bałagan, w który wprowadza Cię IDE? Aby zaimportować kod z innego pliku w tym samym katalogu, należy dodać do niego odniesienie.
OK, więc teraz, gdy masz już rozwiązany ten problem, jak naprawdę połączyć ze sobą dwa oddzielne projekty w tej samej przestrzeni rozwiązań?
Microsoft naprawdę musi naprawić ten problem, abyś mógł intuicyjnie tworzyć to, co większość ludzi chce utworzyć jako nowe pliki w tych samych katalogach, i usuwać rozwiązania, wybierając je i usuwając je z IDE. Początkujący są tak sfrustrowani, że instrukcje ścieżki katalogu są tak elastyczne dla doświadczonych programistów, ale tak niesprawiedliwe dla nowych programistów w ich domyślnych ustawieniach.
Mam nadzieję, że to naprawdę pomoże wam nowym chłopcom i powstrzyma doświadczonych programistów przed udzielaniem złych odpowiedzi, które nie działają dla was. Zakładają, że już rozumiesz instrukcje ścieżki i po prostu chcesz wpisać właściwy kod ... i właśnie dlatego tunel próbuje poprawić kod, ale nie pomaga w rozwiązaniu problemu. Jest to prawdopodobnie najczęstszy problem nieustannie opisywany w przepływie stosów z błędnymi odpowiedziami, które nie działają dla nowych programistów.
źródło
Pierwszym krokiem jest utworzenie odniesienia P2 do P1, wykonując następujące czynności
Następnie musisz się upewnić, że klasy w P1 są dostępne dla P2. Najłatwiej je zrobić
public
.Teraz powinieneś móc ich używać w P2 za pomocą ich w pełni kwalifikowanej nazwy. Zakładając, że przestrzeń nazw P1 to Project1, wtedy zadziałaby następująca
Jednak preferowanym sposobem jest dodanie użycia dla,
Project1
aby można było używać typów bez kwalifikacjiźródło
Jeśli masz dwa projekty w jednym folderze rozwiązania, po prostu dodaj odniesienie projektu do innego. Używając Namespace, możesz uzyskać klasy. Podczas tworzenia obiektu dla tej wymaganej klasy. Wywołaj metodę, którą chcesz.
Pierwszy projekt:
Tutaj dodaj odniesienie do Drugiego Projektu
Drugi projekt:
źródło
W projekcie P1 upublicznij klasę (jeśli jeszcze nie jest). Następnie dodaj odniesienie do projektu (zamiast odniesienia do pliku, błąd, na który się czasami natknąłem) do P2. Dodaj instrukcję using w P2 we właściwym miejscu i zacznij używać klasy od P1.
(Aby wspomnieć o tym: Alternatywą dla upublicznienia klasy byłoby uczynienie P2 przyjacielem P1. Jest to jednak mało prawdopodobne, aby była to odpowiedź, której szukasz, ponieważ miałoby to pewne konsekwencje. Więc trzymaj się powyższej sugestii.)
źródło
Powiedz, że Twoja klasa w projekcie 2 nazywa się MyClass.
Oczywiście najpierw odnieś swój projekt 2 do odniesień w projekcie 1
więc ilekroć chcesz odwołać się do tej klasy, wpisz project2Class. Dodatkowo upewnij się, że zajęcia są również publiczne.
źródło
Miałem problem z różnymi platformami docelowymi.
Robiłem wszystko dobrze, ale po prostu nie mogłem użyć odniesienia w P2. Po tym, jak ustawiłem ten sam docelowy framework dla P1 i P2, działało to jak urok.
Mam nadzieję, że to komuś pomoże
źródło
The name ... does not exist in the current context. Cannot resolve symbol ...
do czasu zmiany ram docelowych projektów, aby pasowały. (Kliknij projekt prawym przyciskiem myszy i przejdź do,Project -> Properties -> Target framework
aby to zmienić.)