gpt4 book ai didi

c# - C# 中的 "Abstract"接口(interface)

转载 作者:可可西里 更新时间:2023-11-01 03:01:13 24 4
gpt4 key购买 nike

这是一个学术问题。背后可以说是一个 X-Y 问题,稍后我可能会单独发布。但我实际上对这里的学术问题特别感兴趣。


我经常发现我有一组接口(interface),它们都具有共同的属性。我想定义一个基本接口(interface)来通用化这些接口(interface),部分原因是为了避免重复,部分原因是我可以传递一个对象并在不知道确切类型的情况下使用通用方法。

也许我有 IFooRepository , IBarRepository等,我可以声明 IRepository<TEntity> .

或者我有一个 IHappyBot , ISadBot , IConfusedBot , 所有这些都有 IBot共同点。

值得注意的是,没有任何类会直接实现这些基接口(interface) - 你永远不会有实现只是的东西 IBot .

如果我们谈论的是的层次结构,而不是接口(interface),那么我会说“啊……基础是抽象类”。

我可以用界面做任何类似的事情来记录 IBot 的期望吗?不会直接实现。

我感兴趣的一个方面是做一些你可以稍后通过反射检测到的事情,所以当我 test my DI setup ,我可以说“啊,这个接口(interface)不应该是可绑定(bind)的,因为它是“抽象的”。


我自己主要关心 C#,但如果此功能具体存在于其他主要语言中,那么听到它会很有趣。

最佳答案

也许是一个哲学问题的回应——但是为什么一个类不能实现 IBot?

抽象类呢?我可能需要一个抽象基 Bot 类来实现 IBot,以此作为检查 Bot 基类是否具备基 Bot 预期的所有功能的一种方式。

接口(interface)是关于定义某物可以/应该做什么,它是一个功能列表。在我看来,说“某物不能声称它满足此功能列表”没有多大意义。

抽象类是有意义的,因为有时抽象类需要填充其实现漏洞(抽象方法等)。接口(interface)不是这种情况。

关于c# - C# 中的 "Abstract"接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48663513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com