我想定义一个函数,该函数仅通过使用基类参数进行定义,即可用于传递某个类层次结构的对象而不会为每个子类覆盖它。
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
函数时,我无法访问未在基类中定义的其他成员。
我可以使用适用于特定类层次结构的泛型来解决此问题吗?不需要重复代码的实用解决方案是什么?
答案 0 :(得分:0)
寻找解决方案后,我可以确定此问题为方法超载的需要。为了使用可以从类层次结构中的任何类获取参数的函数,我发现带有约束的泛型是一种合适的解决方案:
public bool SendReceive<Req, Resp>(Req request, ref Resp response) where Req : Request where Resp : Response