Как использовать класс из одного проекта C # с другим проектом C #

В одном решении у меня есть два проекта: P1 и P2. Как я могу использовать класс P1 в P2?

101
задан Mark Amery 23 September 2017 в 16:01
поделиться

6 ответов

Просто добавьте ссылку на P1 из P2

66
ответ дан 24 November 2019 в 04:37
поделиться
  1. В дереве «Обозреватель решений» разверните проект P2, затем щелкните проект правой кнопкой мыши и выберите в меню «Добавить ссылку».
  2. В диалоговом окне «Добавить ссылку» выберите вкладку «Проекты» и выберите свой проект P1.
  3. Если вы используете пространства имен, вам нужно будет импортировать пространства имен для ваших типов P1, добавив операторы using к вашим файлам в P2.

Обратите внимание, что типы в P1, к которым вы хотите получить доступ напрямую, должны иметь достаточный уровень доступа: обычно это означает, что они должны быть общедоступными.

174
ответ дан 24 November 2019 в 04:37
поделиться

Первый шаг - сделать P2 ссылкой P1, выполнив следующие действия

  • Щелкните правой кнопкой мыши проект и выберите «Добавить ссылку»
  • Перейти на вкладку Projects
  • Выберите P1 и нажмите OK

Затем вам нужно убедиться, что классы в 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();
}
7
ответ дан 24 November 2019 в 04:37
поделиться

Пол Руан прав, я только что попробовал построить проект. Я просто сделал целый 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();
        }
    }
}

ДОЛЖНО помочь

Надеюсь, это поможет

РЕДАКТИРОВАТЬ ::: упс забыл вызов метода для фактического изменения строки, не делайте того же :)

13
ответ дан 24 November 2019 в 04:37
поделиться

Если у вас есть два проекта в одной папке решения. Просто добавьте ссылку на проект в другую. Используя пространство имен, вы можете получить классы. При создании объекта для этого необходимого класса. Вызовите нужный метод.

FirstProject:

class FirstClass()
{
   public string Name()
   {
      return "James";
   }
}

Здесь добавьте ссылку на Второй проект

SecondProject:

class SeccondClass
{
    FirstProject.FirstClass obj=new FirstProject.FirstClass();
    obj.Name();
}
3
ответ дан 24 November 2019 в 04:37
поделиться

В проекте P1 сделайте класс общедоступным (если он еще не открыт). Затем добавьте ссылку на проект (а не ссылку на файл, ошибка, с которой я иногда сталкивался) в P2. Добавьте оператор using в P2 в правильном месте и начните использовать класс из P1.

(Упомянем об этом: альтернативой тому, чтобы сделать класс общедоступным, было бы сделать P2 другом для P1. Однако это вряд ли будет тем ответом, который вам нужен, поскольку он будет иметь некоторые последствия. Так что придерживайтесь вышеизложенного. предложение.)

4
ответ дан 24 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: