【发布时间】:2019-02-01 09:28:01
【问题描述】:
我正在使用 C#。我在我的代码中创建了一个名为 EntityInterface 的接口。我写了这个函数:
private void Save(List<EntityInterface> entities)
{ ... }
在我的代码的其他地方,我有一个变量,定义为List<Job>。 Job 类是一个实现 EntityInterface 的类。
我无法将我的 Job 对象列表传递给 Save 方法。编译器报错参数类型错误,因为List<Job>和List<EntityInterface>不一样。
我需要修改函数以表达参数可以是“实现 EntityInterface 的任何对象的列表”的想法。我已经四处搜索,但找不到如何执行此操作的示例。
【问题讨论】:
-
您在寻找generics吗?还是generic constraints?
-
请粘贴您要传递的定义,以及您的方法的实际类型。
-
不完全确定你在问什么(因为
<? extends Type >?不是 C# 概念),但你应该重新阅读为什么你不能convert list of derived type to list of base type 因为你可能错过了那里的一些信息。跨度> -
试试
private void Save<T>(List<T> entities) where T : EntityInterface。 -
你说的是协方差,但我同意@enigmativity