c# - "extends itself"确保什么的接口(interface)?

标签 c# generics .net-core interface restriction

我正在学习 EventBus 的教程并遇到了以下界面:

public interface IEventHandler<in TEvent> : IEventHandler where TEvent : Event
{
    Task Handle(TEvent @event);
}

public interface IEventHandler
{

}

现在,我得到了泛型部分和限制,但我错过了接口(interface)扩展自身的地方。 这是我第一次看到它被这样使用。它有什么作用? 任何人都可以阐明这个问题吗?谢谢!

最佳答案

在 C# 中,类型 InterfaceInterface<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/

相关文章:

c# - C# 中的进度监视器实现

java - 在 Java 中使用静态方法创建类型的泛型实例

docker - dotnet Web应用程序在Docker容器中运行但未激活

c# - WPF ComboBox 延迟过滤

c# - 如何允许在 PropertyGrid 中修改嵌套类实例而无法访问已检查的类代码?

java - 泛型 List<String> 和 List<Integer> 未按预期运行

java - 来自单个对象的接口(interface)集合

linux - 公司代理背后的 Linux 上的 dotnet restore、NuGet 和 VS Code 问题

.net-core - 如何将System.Text.JsonElement漂亮地打印(格式化)为字符串

c# - C# 类可以将自己的类型作为泛型类型引用吗?