为什么开发人员会在引用它所使用的类的函数中包含一个参数
本文关键字:函数 参数 包含一 开发 引用 为什么 | 更新日期: 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以获得响应。