为什么开发人员会在引用它所使用的类的函数中包含一个参数

本文关键字:函数 参数 包含一 开发 引用 为什么 | 更新日期: 2023-09-27 18:27:10

所以我有以下情况:

class Child : Base, IBase
{
    Response OnOperationResponse(Base base, Parameters params)
    {
       // Code code code
    }
}
public class Base
{
    protected void OnOperationResponse(Parameters params);
}
public interface IBase
{
    Response OnOperationResponse(Base base, Parameters params);
}

我遗漏了很多,但我加入了让我困惑的部分。

因此,Base类和IBase接口都包含相同的函数名,但我希望使用接口的OnOperationResponse调用。我感到困惑的是,为什么库的开发人员在接口中添加了Base参数?难道接口不应该意识到函数被假定为引用this吗?

我是不是遗漏了什么?还是这个图书馆隐藏着什么?

为什么开发人员会在引用它所使用的类的函数中包含一个参数

接口难道不应该意识到函数应该引用对此?

OnOperationResponse中传递的Base类型的参数可以是Base类型的任何实例-为什么要假设它应该与调用它的IBase实例相同?

一个用例(无可否认是完全虚构的)可以是扩充或修改类似于装饰器的Response

class Child : Base, IBase
{
    Response OnOperationResponse(Base someBase, Parameters p)
    {
        var response = someBase.OnOperationResponse(p);
        response.Foo = "bar";
        return response;
    }
}

您不必在Child中实现IBase。但是,你可以。实现意味着它不仅具有"Base"对象的属性,而且还可以处理传入的"Base"类型对象的响应。开发人员可能希望将这些想法分开,并允许您专门化其中之一。

要么制作一个更好的处理程序,实现IBase并接受Child项并很好地处理它们,要么通过扩展Base并制作一个大的东西或其他东西,这些东西仍然可以传递回Child以获得响应。