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



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

4748   8  

8 ответов:

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

  1. в дереве "Обозреватель решений" разверните проект P2, а затем щелкните правой кнопкой мыши проект и выберите в меню "Добавить ссылку".
  2. в диалоговом окне "Добавить ссылку" выберите вкладку "Проекты" и выберите свой проект P1.
  3. Если вы используете пространства имен, то вам нужно будет импортировать пространства имен для ваших типов P1, добавив операторы "using" в ваши файлы в P2.

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

пол Руан прав, я только что попробовал сам построить проект. Я просто сделал целый SLN, чтобы проверить, работает ли он.

Я сделал это в VC# VS2008

Шаг 1:

сделать решение под названием DoubleProject

Шаг 2:

сделать проект в решении с именем DoubleProjectTwo (для этого выберите файл решения, щелкните правой кнопкой мыши -- > добавить --> создать Проект)

Теперь у меня есть два проекта в одном решении

Шаг 3:

как заявил Пол Руан. перейдите к ссылкам в обозревателе решений (если он закрыт, он находится на вкладке " Вид " компилятора). DoubleProjectTwo является одним нуждающихся в функции/методы DoubleProject так в DoubleProjectTwo ссылку правой мышкой там --> добавить --> проекты --> DoubleProject.

Шаг 4:

включить директиву для пространство имен:

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();
        }
    }
}

Шаг 5:

сделать что-то предъявить мне доказательства результаты:

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();
        }
    }
}

это должно сделать трюк

надеюсь, что это помогает

EDIT::: whoops забыл вызов метода, чтобы на самом деле изменить строку , не делайте то же самое :)

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

  • Правой Кнопкой Мыши на проекте и выберите "Добавить ссылку"
  • перейдите на вкладку Проекты
  • выберите P1 и нажмите OK

Далее вам нужно будет убедиться, что классы в P1 доступны для P2. Самый простой способ-сделать их public.

public class MyType { ... }

теперь вы должны быть в состоянии использовать их в P2 через их полное имя. Предполагая, что пространство имен P1 является Project1, то следующее будет работать

Project1.MyType obj = new Project1.MyType();

предпочтительный способ, хотя это добавить использование для Project1 таким образом, вы можете использовать типы без квалификации

using Project1;
...

public void Example() {
  MyType obj = new MyType();
}

новый разработчик, выбрав " создать>проект > имя проекта и изменив каталог решения На "использовать то же решение", все равно создает новый "проект" в том же пространстве решения, но не в том же пространстве каталога, что и текущий файл пользовательского интерфейса или файл командной строки, что по-прежнему приводит к проблемам с ошибками "пакет не найден" при создании и запуске проекта или решения. Этот вот почему приведенные выше предложения по кодированию для импорта пакетов, классов, методов и функций работают только (и, следовательно, не отвечают на вопрос), когда файл "библиотека" или файл "отдельное поведение" находится не только в том же пути к каталогу решения, но и в том же пространстве каталога приложений "пользовательский интерфейс" или "командная оболочка". Это вовсе не произойти, когда вы добавляете еще один проект, используя новый>проект>проект тип команды интегрированной среды разработки. Проблема здесь в том, что новый проект хранится в другом каталог, чем существующие файлы кода клиента или пользовательского интерфейса. Чтобы создать новый "файл" в том же пространстве проекта, а не новый проект новичок должен сделать следующее, что Microsoft не будет делать для вас и даже вводит вас в заблуждение от интуитивно очевидного по умолчанию.

  1. выберите "приложение", в которое вы хотите импортировать новое поведение (из другого файла)
  2. выберите проект>добавить новый элемент
  3. выберите "тип шаблона файла программы", например filetype.py, тип файла.Ява, типа.с, типа.СРР, типа.C# и др. или тип файла класса библиотеки (что-то другое, чем параметры файла запуска, которые вы видите при создании нового проекта приложения или создании нового проекта библиотеки).
  4. в проекте создается новое имя файла с именем по умолчанию.
  5. измените имя файла по умолчанию на что-то вроде library.py или фасад.java и др.

теперь рекомендации кода для импорта библиотек или использования пространства имен будут работать, как описано в комментариях выше, и вам не нужно изменять инструкции path или изменять пути решений и имена решений, которые Microsoft не позволит вам легко изменить (т. е. вы можете изменить имена файлов или имена проектов, но IDE не будет автоматически изменять путь проекта или имена путей решения).

ниже приведен пример Python, но работает аналогично для C#, java или C / C++, используя includes, пространства имен или используя команды кода, соответствующие каждому язык для поиска кода в других классах / проектах в том же пространстве каталогов.

файл приложения "hello world" импортируется из других файлов кода в том же каталоге.

обратите внимание, что разделители пробелов python не будут правильно заполняться в этом редакторе комментариев 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

файл библиотеки или файл" фасада", содержащий классы, методы или функции, которые вы хотите импортировать.

class class1(object):
    """description of class"""

class ClassA(object):
    print ("test2")
    def methodA():
        print ("test3")

def functionA ():
    print ("test4")
    return (0)


pass

теперь, как вы на самом деле решить беспорядок что IDE приводит вас в? Для импорта кода из другого файла в том же пространстве каталогов необходимо добавить ссылку на него.

  1. Выберите файл программы
  2. выберите проект>добавить ссылку
  3. выберите имя файла, видимое с правильным путем к каталогу (проверьте его)
  4. ссылка теперь доступна для интерпретатора, средства проверки кода и / или компилятора.

Итак, теперь у вас есть эта проблема решена, как вы действительно связать два отдельных проекта вместе в одном пространстве решений?

  1. вы должны перейти как к параметрам индексатора или "intellisense", так и к компилятору/интерпретатору и физически проверить или изменить/добавить инструкции пути к каталогу, если они являются чем-то иным, чем то, что указывает на ваш "второй" проект или пространство решения. Когда вы изменяете путь или изменяете переменные пути к своей рабочей области и к определенным местоположениям проектов, которые являются различными пространствами каталогов, затем компилятор и анализатор кода могут найти эти библиотеки, заголовки.h, пространства имен, расположения проектов или файлов.
  2. удалить старые проекты, созданные по ошибке, еще хуже. Вы должны выйти из среды IDE Visual Studio, открыть Проводник windows, перейти в каталог рабочей области ...документы\visualstudio xxx\имя_решения\имя_пакета выберите файл или папку, щелкните правой кнопкой мыши и "удалить" файл или папку.
  3. при повторном входе в IDE и выборе открыть решение или открыть пакет/решение, старые файлы и имена решений / пакетов исчезли, как и их вводящие в заблуждение инструкции пути, которые обманывают компилятор и анализатор кода, чтобы посмотреть на старый каталог, даже если вы изменили имя файла и изменили имя проекта, он не изменяет путь к каталогу с ним.

Microsoft действительно, действительно нужно исправить эти проблемы, так что вы можете интуитивно создать то, что большинство людей хотят создать в виде новых файлов в тех же каталогах и удалить решения с помощью выбор и удаление их из среды IDE. Новички так разочаровываются в заявлениях о пути к каталогу, которые настолько гибки для опытных разработчиков, но так несправедливы к новым разработчикам по умолчанию.

надеюсь, это действительно поможет вам новые ребята и останавливает опытных разработчиков давать вам неправильные ответы, которые не работают для вас. Они предполагают, что вы уже понимаете инструкции path и просто хотите ввести правильный код...поэтому туннель в попытке исправить ваш код, но это не поможет вам решить проблему. Это, вероятно, самая распространенная проблема, постоянно описываемая в stackoverflow с неправильными ответами, которые не работают для новых программистов.

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

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

скажем, ваш класс в проекте 2 называется MyClass.

очевидно, сначала ссылайтесь на свой проект 2 в разделе Ссылки в проекте 1, а затем

using namespaceOfProject2;

// for the class calling bit:

namespaceOfProject2.MyClass project2Class = new namespaceOfProject2.MyClass();

поэтому всякий раз, когда вы хотите ссылаться на этот класс, вы вводите project2Class. Кроме того, убедитесь, что класс является публичным тоже.

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

FirstProject:

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

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

SecondProject:

class SeccondClass
{
    FirstProject.FirstClass obj=new FirstProject.FirstClass();
    obj.Name();
}

Comments

    Ничего не найдено.