지난 주에 DLL (.net DLL)에있는 클래스를 사용하는 것에 대해 친구들과 토론했습니다. 나는 내 Exe에서 그것을 소비해야합니다. NET DLL이 있습니다.EXE에서 DLL 사용
일반적으로는,
- 나는 (내 DLL에) 클래스의 객체
- 시작 호출 방법/함수를 만듭니다 내 솔루션에 DLL을 추가하고 내 exe는
- 에 DLL을 참조 방금 생성 된 객체의 클래스
하지만 마침내 우리는 반사 방식을 우리가하는 방식이 아니라 사용해야한다고 결정했습니다. 원인은 느슨한 커플 링입니다. DLL의 기능을 변경하고 컴파일 할 수 있습니다. 이러한 상황에서는 클라이언트 코드를 컴파일 할 필요가 없습니다.
이 배경으로 질문이 있습니다.
매우 간단한 응용 프로그램 (콘솔 응용 프로그램이라고 말합니다)이 있고 두 클래스 모두 서로 다른 작업을 수행하는 writtern이 있다고 가정합니다. 당신은 클래스 A의 객체를 만들려면 어떻게해야합니까
class Program
{
static void Main()
{
//How do you create a object of the class A.
}
}
class A
{
string A = "I am from A";
public B b;
public A
{
b = new B();
}
}
class B
{
string B = "I am from B";
public B
{
}
public void Print()
{
Console.WriteLine(B);
}
}
때 모든 세 가지 클래스 같은 EXE 및 방법이 동일한 개체를 만들 때 클래스 A와 다른 DLL에서 클래스 B.
질문의 sencond 부분에 대한 하나의 대답은 사용 인터페이스이고 반사를 사용합니다.
리플렉션이 실제로 필요한지 아니면 프로그래밍 표준의 일종입니까?
클래스의 개체를 만드는 가장 좋은 방법은 무엇입니까?
인터페이스 느슨한 결합을 달성하는 올바른 방법입니다. 나는 느슨한 결합하지만 좋은 패턴/방법론은 반사를 사용하여 포함하지 않습니다를 달성하기 위해 반사를 사용하는 방법에 대한 확실하지 않다. –
일반적으로 말하자면 C#에서 *. * 리플렉션을 사용하여 .exe를 다시 컴파일하거나 배포 할 필요가 없습니다. 실제로는 .exe에서 메서드 이름/시그니처/etc를 변경하지 않는 한 리플렉션을 사용하면 어떤 경우에도 다시 컴파일해야합니다. 리플렉션없이 인터페이스를 사용하십시오. –
예, 리플렉션을 사용하여 클래스 라이브러리의 기능을 복제하려고 시도하지 마십시오. –