如何将子类的对象作为函数参数传递?

时间:2019-07-02 07:21:21

标签: c#

我想定义一个函数,该函数仅通过使用基类参数进行定义,即可用于传递某个类层次结构的对象而不会为每个子类覆盖它。

 public bool SendReceive(Request request, Response response){...}


 internal class Message
 {
     public int id;
 }

internal abstract class Request : Message {...}

internal class SystemSetTimeRequest : Request
{
     public long seconds;
     ...
}

internal abstract class Response : Message{...}

internal class SystemSetTimeResponse : Response
{
    public bool time_set;

    ...
}

SendReceive()SystemSetTimeRequest中使用SystemSetTimeResponse函数时,我无法访问未在基类中定义的其他成员。

我可以使用适用于特定类层次结构的泛型来解决此问题吗?不需要重复代码的实用解决方案是什么?

1 个答案:

答案 0 :(得分:0)

寻找解决方案后,我可以确定此问题为方法超载的需要。为了使用可以从类层次结构中的任何类获取参数的函数,我发现带有约束泛型是一种合适的解决方案:

public bool SendReceive<Req, Resp>(Req request, ref Resp response) where Req : Request where Resp : Response
相关问题