以下のコードで問題を単純化して再現しました。私が受け取っているエラーは次のとおりです: 引数 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);
}