我正在学习 EventBus 的教程并遇到了以下界面:
public interface IEventHandler<in TEvent> : IEventHandler where TEvent : Event
{
Task Handle(TEvent @event);
}
public interface IEventHandler
{
}
现在,我得到了泛型部分和限制,但我错过了接口(interface)扩展自身的地方。 这是我第一次看到它被这样使用。它有什么作用? 任何人都可以阐明这个问题吗?谢谢!
最佳答案
在 C# 中,类型 Interface
和 Interface<T>
(您有时会看到它是 Interface`1
)是不同的类型。它们在类型系统内部没有关系(除非一个接口(interface)扩展另一个接口(interface))。
当您有 Java 背景时,您可能会感到困惑,因为您有“原始类型”和 List<T>
始终是 List
同时。这对于 C# 是不正确的。
您可以重命名接口(interface)以使这种区别更清楚:
IEventHandler<in TEvent> : IEventHandlerRaw
(这只是为了让解释更清楚。不建议在生产代码中使用)
关于c# - "extends itself"确保什么的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62069147/