동일한 솔루션에 P1과 P2의 두 가지 프로젝트가 있습니다. P2에서 P1 클래스를 어떻게 사용할 수 있습니까?
동일한 솔루션에 P1과 P2의 두 가지 프로젝트가 있습니다. P2에서 P1 클래스를 어떻게 사용할 수 있습니까?
답변:
P2에서 P1에 대한 참조를 추가하기 만하면됩니다.
직접 액세스하려는 P1의 유형에는 충분한 액세스 수준이 있어야합니다. 일반적으로 이는 공개해야 함을 의미합니다.
Paul Ruane이 맞습니다. 방금 프로젝트를 구축해 보았습니다. 나는 그것이 작동하는지 테스트하기 위해 전체 SLN을 만들었습니다.
VC # VS2008에서 만들었습니다.
<< (() 주석으로 이것을 읽는 다른 사람들을 돕는 것)
1 단계:
DoubleProject라는 솔루션 만들기
2 단계:
DoubleProjectTwo라는 솔루션에서 프로젝트 만들기 (이렇게하려면 솔루션 파일을 선택하고 마우스 오른쪽 단추로 클릭-> 추가-> 새 프로젝트)
이제 동일한 솔루션에 두 개의 프로젝트가 있습니다.
Step3 :
Paul Ruane이 말했듯이. 솔루션 탐색기의 참조로 이동합니다 (닫힌 경우 컴파일러의보기 탭에 있음). DoubleProjectTwo는 DoubleProject의 기능 / 메소드가 필요한 것이므로 DoubleProjectTwo에서 오른쪽 마우스 참조-> Add-> Projects-> DoubleProject.
Step4 :
네임 스페이스에 대한 지시문을 포함하십시오.
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();
}
}
}
트릭을해야합니다.
도움이 되었기를 바랍니다
편집 ::: 웁스 실제로 문자열을 변경하는 메서드 호출을 잊어 버렸습니다. 동일한 작업을 수행하지 마십시오. :)
너무 자주 새로운 개발자는 Visual Studio IDE의 일반적인 문제인이 간단한 질문을합니다. 특정 질문에 대답하는 사람은 거의 없으며 자주 질문을 비판하거나 일반적인 문제에 대답하지 않는 해결책을 "추측"합니다. 첫 번째 일반적인 문제는 IDE가 프로젝트 이름을 변경하지 않는 한 기존 솔루션 (기본적으로 새 솔루션을 생성 함)에 새 파일 (.java, .py, .cpp, .c)을 추가하는 대신 새 프로젝트를 생성하도록 유도한다는 것입니다. 현재 솔루션에 추가하십시오. 이 문제는 Python, Java, C #, C ++ 및 C 프로젝트 폴더에서 발생합니다.
이것은 IDE의 new> project> project 유형 명령을 사용하여 다른 프로젝트를 추가 할 때 발생하지 않습니다. 여기서 문제는 새 프로젝트가 기존 클라이언트 또는 사용자 인터페이스 코드 파일과 다른 디렉토리에 저장된다는 것입니다. 새 프로젝트가 아닌 동일한 프로젝트 공간에 새 "파일"을 만들려면 초보자는 Microsoft가 수행하지 않는 다음 작업을 수행해야하며 기본적으로 직관적으로 명백한 것에서 멀어지게합니다.
이제 라이브러리를 가져 오거나 네임 스페이스를 사용하기위한 코드 권장 사항이 위의 설명에 설명 된대로 작동하며 Microsoft에서 쉽게 변경할 수없는 경로 문을 변경하거나 솔루션 경로 및 솔루션 이름을 변경할 필요가 없습니다 (즉, 파일 이름 또는 프로젝트 이름이지만 IDE는 프로젝트 경로 또는 솔루션 경로 이름을 자동으로 변경하지 않습니다.
다음은 Python 예제이지만 포함, 네임 스페이스를 사용하거나 각 언어에 적합한 코드 명령을 사용하여 동일한 디렉토리 공간의 다른 클래스 / 프로젝트에서 코드를 찾기 위해 C #, Java 또는 C / C ++에서 유사하게 작동합니다.
동일한 디렉토리의 다른 코드 파일에서 가져 오는 응용 프로그램 파일 "hello world"입니다.
이 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
가져올 클래스, 메서드 또는 함수가 포함 된 라이브러리 파일 또는 "façade"파일입니다.
class class1(object):
"""description of class"""
class ClassA(object):
print ("test2")
def methodA():
print ("test3")
def functionA ():
print ("test4")
return (0)
pass
이제 IDE가 당신을 이끄는 혼란을 실제로 어떻게 해결합니까? 동일한 디렉토리 공간에있는 다른 파일에서 코드를 가져 오려면 해당 파일에 대한 참조를 추가합니다.
이제이 문제가 해결되었으므로 동일한 솔루션 공간에서 두 개의 개별 프로젝트를 실제로 연결하는 방법은 무엇입니까?
Microsoft는 실제로 이러한 문제를 해결해야하므로 대부분의 사람들이 동일한 디렉토리에 새 파일로 만들고자하는 것을 직관적으로 만들고 솔루션을 선택하고 IDE에서 삭제하여 제거 할 수 있습니다. 초보자는 노련한 개발자에게는 매우 유연하지만 기본적으로 새로운 개발자에게는 불공평 한 디렉토리 경로 문에 매우 실망합니다.
이것이 정말 새로운 사람들에게 도움이되고 노련한 개발자들이 당신에게 맞지 않는 잘못된 대답을주는 것을 막기를 바랍니다. 그들은 이미 경로 문을 이해하고 올바른 코드를 입력하기를 원한다고 가정합니다. 이것이 코드를 수정하려고 시도 할 때 터널이 들어오는 이유이지만 문제를 해결하는 데 도움이되지 않습니다. 이것은 아마도 새로운 프로그래머에게는 작동하지 않는 잘못된 답변으로 stackoverflow에서 지속적으로 설명되는 가장 일반적인 문제 일 것입니다.
첫 번째 단계는 다음을 수행하여 P2 참조 P1을 만드는 것입니다.
다음으로 P1의 클래스가 P2에 액세스 할 수 있는지 확인해야합니다. 가장 쉬운 방법은 그들을 만드는 것 public
입니다.
public class MyType { ... }
이제 정규화 된 이름을 통해 P2에서 사용할 수 있습니다. P1의 네임 스페이스가 Project1이라고 가정하면 다음이 작동합니다.
Project1.MyType obj = new Project1.MyType();
하지만 선호하는 방법은 using for를 추가하여 Project1
자격없이 유형을 사용할 수 있도록하는 것입니다.
using Project1;
...
public void Example() {
MyType obj = new MyType();
}
하나의 솔루션 폴더에 두 개의 프로젝트가있는 경우 네임 스페이스를 사용하여 다른 프로젝트에 참조를 추가하기 만하면 클래스를 가져올 수 있습니다. requried 클래스에 대한 객체를 만드는 동안. 원하는 방법을 호출하십시오.
FirstProject :
class FirstClass()
{
public string Name()
{
return "James";
}
}
여기에 두 번째 프로젝트에 대한 참조를 추가하십시오.
SecondProject :
class SeccondClass
{
FirstProject.FirstClass obj=new FirstProject.FirstClass();
obj.Name();
}
다른 대상 프레임 워크에 문제가 있습니다.
나는 모든 것을 올바르게하고 있었지만 P2에서 참조를 사용할 수 없었습니다. P1과 P2에 대해 동일한 대상 프레임 워크를 설정 한 후 매력처럼 작동했습니다.
누군가를 도울 수 있기를 바랍니다.
The name ... does not exist in the current context. Cannot resolve symbol ...
프로젝트의 대상 프레임 워크를 일치시킬 때까지 같은 오류가 발생하여 동일한 문제가 발생했습니다 . (프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Project -> Properties -> Target framework
변경하려면 이동 하십시오.)