2012-07-02 1 views
0

라이브러리 a에서 메소드가 호출 될 때 라이브러리 b에서 메소드를 실행해야합니다.참조되지 않은 라이브러리에서 이벤트 첨부하기

예를 들어 library b이 라이브러리 a의 testEvent 이벤트에 첨부 될 수 있습니까?

라이브러리 A -

public event testEvent = null; 
pubic class alpha{ 
    public void main(){//application entry point  
    } 
} 

라이브러리 B (인해 순환 종속성) 라이브러리 (B)를 참조 할 수있다 - 즉 실패 library a

public class beta{ 
    public void hello(){ 
    } 
} 

하는 참조 난 생각 세 번째 라이브러리 library c을 작성해야하며 library b에 대한 참조가 있으며 library a으로 참조됩니다.

+0

당신이 베타 어떤 곳 초기화 할 수 있으며, 알파에 대한 참조를 넣으시겠습니까? – gabba

+0

라이브러리 A에서 인터페이스를 만들고 B에서 사용할 수 있습니까? – gabba

+0

DI 컨테이너를 사용하고 alpha를 해결하고 testEvent를 구독하는 모듈로 베타를 초기화 할 수 있습니까? 또는 알파 (인터페이스에 의해)에서 베타를 해결하고 전화 안녕하세요 – gabba

답변

1

가장 간단한 해결책 중 하나는 인터페이스 정의가 a이고 구현이 b입니다.

public class beta : ibeta { 
    public void hello() { 
    } 
} 

는 A.DLL :

B.DLL : 그런 다음, 당신은 반사와 인터페이스의 인스턴스에 대한 참조를 해결

public interface ibeta { 
    void hello(); 
} 

.. 

public static void Main() 
{ 
    // resolve type by its fully qualified name 
    ibeta b = (ibeta)Activator.CreateInstance(Type.GetType("beta, B")); 
    b.hello(); 
}