我在程序集Base.dll中具有以下接口
public interface IMessageHander<in T>{
void Handle(T msg);
}
public class MyBase<TChild> where TChild: MyBase<TChild>{
private TChild Self => this as TChild;
void CallMethods(){
// how to call implemented interfaces handlers??
// Self.Handle(msg1);
// Self.Handle(msg2)
}
}
有人引用Base.dll并编写以下代码
public class Msg1{}
public class Msg2{}
public class Msg3{}
public class MyHandler: IMessageHander<Msg1>,IMessageHander<Msg2>,IMessageHander<Msg3>
{
void Handle(Msg1 msg){}
void Handle(Msg2 msg){}
void Handle(Msg3 msg){}
}
在Base.Dll中,通过反射,我能够找到实现了哪些接口以及要传递的接口的泛型类型,即所有消息类型及其对应的处理程序。我希望能够使用Expression.Lambda来调用它们。我该怎么做?
我不想使用我已经知道的反射。请查看此问题作为背景How to create object dynamically
我仅以基本对象的形式接收要作为消息传递的对象。