q1063823095 2020-04-20 14:12 采纳率: 0%
浏览 504
已结题

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

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

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

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

请问该怎么写?

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

  • 写回答

2条回答 默认 最新

  • hxycsdn9159 2020-04-22 17:29
    关注

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

    评论

报告相同问题?