C #Передача коллекции как коллекции интерфейсов

Я упростил и воспроизвел свою проблему в приведенном ниже коде. Ошибка, которую я получаю: :Аргумент 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);
}
9
задан YouGotCSharpInMyJava 6 July 2012 в 17:55
поделиться