我在下面的代码中简化并重现了我的问题。我收到的错误是:参数 1:无法从 'System.Collections.ObjectModel.Collection' 转换为 'System.Collections.ObjectModel.Collection
导致此问题的设计决策的一些背景:我创建了一个用于处理“IFruit”的 Web 服务,但由于 SOAP 和端点绑定的性质,据我所知,我创建了具有 IFruit 显式实现的方法。在业务层上,为每个水果的具体实现创建一个单独的方法首先会导致大量重复代码,其次业务和服务层耦合得足够紧密,以至于以后在 Web 服务中接受新的 IFruit 类型也需要更改我的代码在业务层中(添加另一个冗余代码副本)。这种设计是我过去使用 Java 成功实现的设计,但 C# 接口似乎完全不同,足以让我失望。请指教。
public interface IFruit{
public string TakeBite();
}
public Apple : IFruit{
public string TakeBite(){
return "tasty bite of apple";
}
}
public void EatFruit(Collection<IFruit> fruits){
foreach(var fruit in fruits){
Console.WriteLine(fruit.TakeBite());
}
}
public void EatApples(Collection<Apple> apples){
this.EatFruit(apples);
}