2012-08-25 3 views
0

저는 C#으로 프로그램을 만들고 많은 DLL을 사용합니다. 그러나, 나는 단지 각 dll에서 함수의 작은 금액을 사용하고, 어떻게 든 dll을 액세스 할 수 있는지 궁금해하고 별도의 dll로 사용되는 기능을 추출합니다.dll 종속성 찾기

다른 말로하면, 나는 2 개의 dll A와 B를 가지고 있다고 가정하자. A는 함수 a, b와 c를 가지고 있고 B는 함수 1, 2와 3을 가지고있다. 내가 a와 2만을 사용한다면, 어떤 방법이 있는가? 또는 그것은 심지어 합법적인가?) 어떻게 든 제 3의 dll C와 단지 a와 2를 만드는 것?

목표는 그래서 (실제로는 더 20 등) (2)를 참조 할 필요가 없습니다이며, 대신에 단지 1

법적 /이 가능해야합니다 ???? 나는 마이크로 소프트가 dll을 하나로 결합하는 도구를 가지고 있다는 것을 알고 있지만, 그것들을 편집하는 방법을 모른다. 아무도 설명 할 수 없다?

+0

합법적인지 여부를 모르겠습니다 (Microsoft에서 만든 어셈블리이거나 제 3자가 제공 한 사용자 라이선스) EULA를주의 깊게 읽어야합니다. 어쨌든 참조 수를 제한하기 위해 할 수있는 일은 예를 들어 "외부/도우미 메서드"라는 모든 필요한 참조가있는 라이브러리 하나를 만들어 유일한 저장소로 사용하는 것입니다. 이 방법을 사용하면 20 대신 단일 참조를 사용할 수 있습니다. 참고 : 예를 들어 사용하는 메서드가 동일한 어셈블리에 정의 된 다른 클래스를 매개 변수로 사용하는 경우에는이 솔루션이 적용되지 않을 수 있습니다. –

+0

아는 한 그런 것은 없습니다. DLL이 당신 것이고 - 나는 그들이 믿지 않는다면, 당신은 소스를 합칠 수 있습니다. 하지만 당신은 다른 사람이 소유 한 코드를 바꿀 수 없으며 이러한 코드로 "자신의 케이크를 굽습니다"라고 말하면서 이것이 가능하지 않게되기를 바랍니다. 그렇지 않으면 혼란 스럽습니다. – devundef

답변

0

@ Mattb2291 : 나는 다른 접근 방식을 제안합니다. 2. 클래스 A와 클래스 B는 C에서 상속해야합니다. 클래스 C에서는 메소드 a와 메소드 2에 기본 구현을 제공하십시오.

그러나 특정 사항에 대해 명심해야합니다 :

먼저 OOP의 측면에서 동일한 문제 영역과 관련된 클래스 A와 B가 있습니까?

class C{ 
    void a(){ 
    } 

    void 2(){ 
    } 
} 

class A:C{ 
} 

class B:C{ 
} 

이 답변은 OPPS의 관점에서입니다 : 방법 A 2는 해당 클래스 내에서 모든 클래스 멤버를 액세스하는 경우 두 번째는, 당신처럼 보일 수 있습니다 클래스 C. 당신 코드로 이동해야합니다. 프로젝트에 구현하기 전에이를 확인해야합니다.