私は以下のコードで問題を単純化して再現しました。引数1: 'System.Collections.ObjectModel.Collection'から 'System.Collections.ObjectModel.Collection'に変換できないC#コレクションをインターフェイスのコレクションとして渡す
この問題を引き起こした設計上の決定の背景: "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);
}
ありがとうございます。これがコンパイルされます。今私の単体テストを更新する。 – YouGotCSharpInMyJava