从未引用的库中附加事件

时间:2012-07-02 15:36:12

标签: c# circular-dependency

当在库a中调用方法时,我需要在库b中触发一个方法。

例如,library b是否可能以某种方式附加到库a中的事件testEvent

库a - 不能引用库b(因为循环依赖)

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

图书馆b - 引用library a

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

如果做不到这一点,我想我必须创建第三个库library c,它引用library b,并由library a引用。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案之一是在a中有一个接口定义,在b中有一个实现。然后,在a中,使用反射解析对接口实例的引用:

B.DLL:

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

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