Я упростил и воспроизвел свою проблему в приведенном ниже коде. Ошибка, которую я получаю: :Аргумент 1 :не может преобразовать из «System.Collections.ObjectModel.Collection» в «System.Collections.ObjectModel.Collection
Некоторая предыстория проектных решений, которые привели к этой проблеме :Я создал веб-службу для работы с «IFruit», но из-за природы SOAP и привязок конечных точек, как я их понимаю, я создал методы с явными реализациями IFruit.. На бизнес-уровне создание отдельного метода для каждой конкретной реализации фруктов привело бы, во-первых, к большому дублированию кода, а, во-вторых, к достаточно тесной связи между бизнес-уровнем и сервисным уровнем, поэтому принятие новых типов 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);
}