好的。所以我目前正在尝试在 C# 中创建一个将接口(interface)作为参数的接口(interface)列表。为了更清楚地说明这一点,让我举个例子:
public interface IPlate<T> where T : IWaffle {}
public interface IWaffles {}
public class BelgiumWaffle : IWaffle {}
public class FalafelWaffle : IWaffle {}
public class HugePlate : IPlate<BelgiumWaffle> {}
public class SmallPlate : IPlate<FalafelWaffle> {}
// Now, I want to do the following:
var plates = new List<IPlate<IWaffle>>();
plates.add(new HugePlate());
plates.add(new SmallPlate());
目标是能够将 IPlate 对象列表序列化为 XML。我希望使用泛型来执行此操作,但我不断收到错误消息,告诉我在尝试添加时存在一些参数错误(又名 - 类型不匹配)。只是不确定我在这里做错了什么。这对我来说似乎是对的,但我一定遗漏了一些东西(显然)。
更新:我应该提一下,这是 .NET v3.5
更新:抱歉!写有关 Plate 类定义的问题时出现一些错别字。
最佳答案
我认为你应该使用协方差(.NET 4.0)
public interface IPlate<out T> where T : IWaffle {}
并将IPancake
替换为IWaffle
var plates = new List<IPlate<IPancake>>();
关于c# - C# 中的 List<T<U>> 其中 T 和 U 是接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13070160/