В одном решении у меня есть два проекта: P1 и P2. Как я могу использовать класс P1 в P2?
Обратите внимание, что типы в P1, к которым вы хотите получить доступ напрямую, должны иметь достаточный уровень доступа: обычно это означает, что они должны быть общедоступными.
Первый шаг - сделать P2 ссылкой P1, выполнив следующие действия
Затем вам нужно убедиться, что классы в P1 доступны для P2. Самый простой способ - сделать их общедоступными
.
public class MyType { ... }
Теперь вы сможете использовать их в P2 через их полное имя. Если предположить, что пространство имен P1 - Project1, то будет работать следующее
Project1.MyType obj = new Project1.MyType();
. Однако предпочтительный способ - добавить using для Project1
, чтобы вы могли использовать типы без квалификации
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
Пол Руан прав, я только что попробовал построить проект. Я просто сделал целый SLN, чтобы проверить, работает ли он.
Я сделал это в VC # VS2008
<< (Просто помогал другим людям, которые это читают, с помощью () комментариев)
Шаг 1:
Сделайте решение под названием DoubleProject
Шаг 2:
Сделайте Проект в решении с именем DoubleProjectTwo (для этого выберите файл решения, щелкните правой кнопкой мыши -> Добавить -> Новый проект)
Теперь у меня есть два проекта в одном решении
Шаг 3:
Как заявил Пол Руан . перейти к ссылкам в обозревателе решений (если он закрыт на вкладке просмотра компилятора). DoubleProjectTwo - это тот, который нуждается в функциях / методах DoubleProject, поэтому в DoubleProjectTwo ссылка правой кнопкой мыши там -> Добавить -> Проекты -> DoubleProject.
Шаг 4:
Включите директиву для 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:
Сделайте что-нибудь, чтобы показать мне доказательство результаты:
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;
}
}
}
Главное
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();
}
}
}
ДОЛЖНО помочь
Надеюсь, это поможет
РЕДАКТИРОВАТЬ ::: упс забыл вызов метода для фактического изменения строки, не делайте того же :)
Если у вас есть два проекта в одной папке решения. Просто добавьте ссылку на проект в другую. Используя пространство имен, вы можете получить классы. При создании объекта для этого необходимого класса. Вызовите нужный метод.
FirstProject:
class FirstClass()
{
public string Name()
{
return "James";
}
}
Здесь добавьте ссылку на Второй проект
SecondProject:
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
В проекте P1 сделайте класс общедоступным (если он еще не открыт). Затем добавьте ссылку на проект (а не ссылку на файл, ошибка, с которой я иногда сталкивался) в P2. Добавьте оператор using в P2 в правильном месте и начните использовать класс из P1.
(Упомянем об этом: альтернативой тому, чтобы сделать класс общедоступным, было бы сделать P2 другом для P1. Однако это вряд ли будет тем ответом, который вам нужен, поскольку он будет иметь некоторые последствия. Так что придерживайтесь вышеизложенного. предложение.)