C# 从未引用的库附加事件
当在库a中调用一个方法时,我需要在库b中启动一个方法 例如,C# 从未引用的库附加事件,c#,circular-dependency,C#,Circular Dependency,当在库a中调用一个方法时,我需要在库b中启动一个方法 例如,library b是否可能附加到库a中的事件testEvent 库a-无法引用库b(因为循环依赖关系) 库b-参考了库a public class beta{ public void hello(){ } } 如果做不到这一点,我想我必须创建第三个库,库c,它引用了库b,并被库a引用最简单的解决方案之一是在a中定义接口,在b中实现。然后,在中,使用反射解析对接口实例的引用: B.dll: public class beta
library b
是否可能附加到库a中的事件testEvent
库a-无法引用库b(因为循环依赖关系)
库b-参考了库a
public class beta{
public void hello(){
}
}
如果做不到这一点,我想我必须创建第三个库,
库c
,它引用了库b
,并被库a
引用最简单的解决方案之一是在a中定义接口,在b中实现。然后,在中,使用反射解析对接口实例的引用:
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();
}
你们能在某处初始化beta并引用alpha吗?你们能在库A中创建接口并在库B中使用它们吗?你们能使用DI容器并将beta初始化为模块来解析alpha并订阅testEvent吗?或者从alpha解析beta(通过接口)并调用hello
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();
}