c# - 我可以规定 C# 类型参数只能是接口(interface)类型吗?

标签 c# generics type-constraints

我想实现一个大致如下所示的通用 C# 类:

abstract class Foobar<T> : AbstractBase, T
{ ... }

这失败了,因为 C# 只允许基类之后的类型是接口(interface),所以接下来我试试这个:

abstract class Foobar<T> : AbstractBase, T where T : interface
{ ... }

但后来我发现 C# 不允许这种形式的类型约束。仅允许 where T : structwhere T : class

我如何规定类型参数只能是接口(interface)类型?

最佳答案

基本上,你不能。

您可以对特定接口(interface)进行约束,但不能对所有接口(interface)进行通用约束。例如,您可以限制为 IEnumerable,但不能限制任何接口(interface)。

你需要这个做什么?

关于c# - 我可以规定 C# 类型参数只能是接口(interface)类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905573/

相关文章:

c# - Windows Azure 服务管理 API 交换问题

.NET 4.0 中的 C# Task.Run 等价物

c# - 当 DbContext 在单独的项目中时,visual studio 2022 .NET 6 脚手架不起作用

Java 使用 -Xlint :unchecked for details 重新编译

java - 什么是原始类型,为什么我们不应该使用它呢?

c# - XNA 中的彩色单像素

c# - .NET 管理层关系

rust - 关联类型的相等性约束的替代方法

performance - 调试 GHC 的约束求解器导致的编译时性能问题

C# 泛型类型约束