C# 不知道子类类名的情况下,如何调用子类的方法

有一个基类SocketBase,其中有一个RecvMsg(string msg)函数,

开发中,有若干个class去继承或者实现这个SocketBase,

想要子类中的RecvMsg被自动调用(不知道子类类名的情况下)

请问该怎么写?

补充:有点像C#的插件开发一样,别人在实现插件的接口时候,可以任意命名类命,那么在接口层,他们是怎么调用的子类方法呢?

class SocketBase
{
public virtual void RecvMsg(string msg) { ... }
public void foo() 
{
RecvMsg(xxx); //这个调用的就是派生类的。
}
}
class MySocket : SocketBase
{
public override void RecvMsg(string msg) { ... }
}

1.Assembly.GetExecutingAssembly()获取当前程序集所有的Type
2.遍历这些Type找到继承自SocketBase的Type,可以试试Type.BaseType==typeof(SocketBase) 或者 is 运算符
3.使用反射创建Type的实例
4.使用反射找到这个实例的RecvMsg方法
5.使用Method.Invoke()进行调用