Dalam solusi yang sama, saya punya dua proyek: P1 dan P2. Bagaimana saya bisa menggunakan kelas P1 di P2?
Dalam solusi yang sama, saya punya dua proyek: P1 dan P2. Bagaimana saya bisa menggunakan kelas P1 di P2?
Jawaban:
Cukup tambahkan referensi ke P1 dari P2
Perhatikan bahwa jenis di P1 yang ingin Anda akses secara langsung harus memiliki tingkat akses yang memadai: biasanya ini berarti jenis tersebut harus dipublikasikan.
Paul Ruane benar, saya baru saja mencoba membangun proyek itu sendiri. Saya baru saja membuat SLN utuh untuk diuji apakah berhasil.
Saya membuat ini di VC # VS2008
<< (Hanya membantu orang lain yang membaca ini juga dengan () komentar)
Langkah 1:
Buat solusi yang disebut DoubleProject
Langkah 2:
Buat Proyek dalam solusi bernama DoubleProjectTwo (untuk melakukan ini pilih file solusi, klik kanan -> Tambah -> Proyek Baru)
Saya sekarang memiliki dua proyek dalam solusi yang sama
Step3:
Seperti yang dikatakan Paul Ruane. buka referensi di explorer solusi (jika ditutup, itu ada di tab tampilan kompilator). DoubleProjectTwo adalah salah satu fungsi / metode yang dibutuhkan dari DoubleProject jadi di referensi mouse kanan DoubleProjectTwo ada -> Tambah -> Proyek -> DoubleProject.
Step4:
Sertakan direktif untuk namespace:
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:
Buat sesuatu tunjukkan bukti hasil:
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;
}
}
}
Utama
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();
}
}
}
Itu HARUS berhasil
Semoga ini membantu
EDIT ::: whoops lupa pemanggilan metode untuk benar-benar mengubah string, jangan lakukan hal yang sama :)
Terlalu sering pengembang baru menanyakan pertanyaan sederhana ini yang merupakan masalah umum khususnya dengan Visual Studio IDE. Hanya sedikit orang yang menjawab pertanyaan spesifik dan sering mengkritik pertanyaan atau memberikan "tebakan" untuk solusi yang tidak menjawab masalah umum. Masalah umum pertama adalah IDE mengarahkan Anda untuk membuat proyek baru daripada menambahkan file baru (.java, .py, .cpp, .c) ke solusi yang ada (secara default akan membuat solusi baru) kecuali Anda mengubah nama proyek dan tambahkan ke solusi saat ini. Masalah ini terjadi untuk folder proyek Python, java, c #, C ++ dan C.
Ini tidak terjadi ketika Anda menambahkan proyek lain menggunakan perintah new> project> project type dari IDE. Masalahnya di sini adalah proyek baru disimpan dalam direktori yang berbeda dari file kode antarmuka Klien atau Pengguna yang ada. Untuk membuat "file" baru dalam ruang proyek yang sama daripada proyek baru, pemula perlu melakukan hal berikut yang tidak akan dilakukan Microsoft untuk Anda dan bahkan menyesatkan Anda dari hal yang sudah jelas secara intuitif secara default.
SEKARANG rekomendasi kode untuk mengimpor pustaka atau menggunakan namespace akan berfungsi seperti yang dijelaskan dalam komentar di atas dan Anda tidak perlu mengubah pernyataan jalur atau mengubah jalur solusi dan nama solusi yang Microsoft tidak akan membiarkan Anda mengubah dengan mudah (yaitu Anda dapat mengubah nama file atau nama proyek, tetapi IDE tidak akan secara otomatis mengubah jalur proyek atau nama jalur solusi).
Berikut ini adalah contoh Python tetapi bekerja serupa untuk C #, java, atau C / C ++ menggunakan termasuk, ruang nama atau menggunakan perintah kode yang sesuai untuk setiap bahasa untuk menemukan kode di kelas / proyek lain di RUANG DIREKTORI YANG SAMA.
File aplikasi "hello world" diimpor dari file kode lain di direktori yang sama.
Perhatikan bahwa pembatas spasi putih python tidak akan menjadi spasi dengan benar di editor komentar stackoverflow ini:
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
File pustaka atau file "façade" yang berisi kelas, metode, atau fungsi yang ingin Anda impor.
class class1(object):
"""description of class"""
class ClassA(object):
print ("test2")
def methodA():
print ("test3")
def functionA ():
print ("test4")
return (0)
pass
SEKARANG bagaimana Anda benar-benar menyelesaikan kekacauan yang dituntun oleh IDE? Untuk mengimpor kode dari file lain di ruang direktori yang sama Anda menambahkan referensi padanya.
Oke, sekarang setelah masalah Anda teratasi, bagaimana Anda benar-benar menghubungkan dua proyek terpisah bersama dalam ruang solusi yang sama?
Microsoft benar-benar perlu memperbaiki masalah ini sehingga Anda dapat secara intuitif membuat apa yang kebanyakan orang ingin buat sebagai file baru di direktori yang sama dan menghapus solusi dengan memilihnya dan menghapusnya dari IDE. Pemula menjadi sangat frustrasi dengan pernyataan jalur direktori yang begitu fleksibel untuk pengembang berpengalaman, tetapi sangat tidak adil bagi pengembang baru dalam pengaturan default mereka.
Semoga ini benar-benar membantu Anda orang baru dan menghentikan pengembang berpengalaman memberi Anda jawaban yang salah yang tidak berhasil untuk Anda. Mereka menganggap Anda sudah memahami pernyataan jalur dan hanya ingin mengetikkan kode yang benar ... yang juga merupakan alasan mengapa terowongan mencoba memperbaiki kode Anda tetapi tidak membantu Anda memperbaiki masalah. Ini mungkin masalah paling umum yang terus dijelaskan di stackoverflow dengan jawaban yang salah yang tidak berfungsi untuk pemrogram baru.
Langkah pertama membuat referensi P2 P1 dengan melakukan hal berikut
Selanjutnya Anda harus memastikan bahwa kelas di P1 dapat diakses oleh P2. Cara termudah adalah membuatnya public
.
public class MyType { ... }
Sekarang Anda harus dapat menggunakannya di P2 melalui nama yang sepenuhnya memenuhi syarat. Dengan asumsi namespace P1 adalah Project1, maka berikut ini akan berfungsi
Project1.MyType obj = new Project1.MyType();
Cara yang lebih disukai adalah dengan menambahkan penggunaan untuk Project1
sehingga Anda dapat menggunakan tipe tanpa kualifikasi
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
Jika Anda memiliki dua proyek dalam satu folder solusi. Cukup tambahkan Referensi Proyek ke yang lain. Menggunakan Namespace Anda bisa mendapatkan kelas. Saat membuat objek untuk itu kelas yang diperlukan. Panggil Metode yang Anda inginkan.
FirstProject:
class FirstClass()
{
public string Name()
{
return "James";
}
}
Di sini tambahkan referensi ke Proyek Kedua
SecondProject:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
Dalam proyek P1 buat kelas menjadi publik (jika belum). Kemudian tambahkan referensi proyek (daripada referensi file, kesalahan yang kadang-kadang saya temui) ke P2. Tambahkan pernyataan using di P2 di tempat yang benar dan mulai gunakan kelas dari P1.
(Untuk menyebutkan ini: Alternatif untuk membuat kelas publik akan menjadikan P2 sebagai teman untuk P1. Namun, ini tidak mungkin menjadi jawaban yang Anda cari karena akan memiliki beberapa konsekuensi. Jadi tetaplah dengan saran di atas.)
Katakanlah kelas Anda di proyek 2 disebut MyClass.
Jelas, pertama rujuk proyek Anda 2 di bawah referensi dalam proyek 1 lalu
using namespaceOfProject2;
// for the class calling bit:
namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();
jadi kapan pun Anda ingin mereferensikan kelas itu, Anda mengetik project2Class. Selain itu, pastikan kelas itu juga untuk umum.
Saya memiliki masalah dengan kerangka kerja target yang berbeda.
Saya melakukan semuanya dengan benar, tetapi tidak bisa menggunakan referensi di P2. Setelah saya menetapkan kerangka target yang sama untuk P1 dan P2, itu bekerja seperti pesona.
Semoga bisa membantu seseorang
The name ... does not exist in the current context. Cannot resolve symbol ...
sampai saya mengubah kerangka kerja target proyek agar sesuai. (Klik kanan proyek dan pergi ke Project -> Properties -> Target framework
untuk mengubahnya.)