Ho semplificato e riprodotto il mio problema nel codice qui sotto. L'errore che sto ricevendo è: Argomento 1: impossibile convertire da 'System.Collections.ObjectModel.Collection' a 'System.Collections.ObjectModel.CollectionC# Passare una collezione come una collezione di interfacce
Alcuni background per le decisioni di progettazione che hanno portato a questo problema: Ho creato un servizio web per trattare con "IFruit", ma a causa della natura dei collegamenti SOAP e endpoint, mentre li comprendo, ho creato metodi con implementazioni esplicite di IFruit. Sul piano aziendale, la creazione di un metodo separato per ogni specifica implementazione di frutta causerebbe innanzitutto un sacco di codice duplicato e in secondo luogo accorcerebbe il livello aziendale e di servizio in modo abbastanza stretto che l'accettazione di nuovi tipi di IFruit nel servizio Web richiederebbe anche la modifica del mio codice nel livello aziendale (aggiungendo un'altra copia del codice ridondante). Questo progetto è uno che ho implementato con successo usando Java in passato, ma le interfacce C# sembrano essere abbastanza diverse da lanciarmi. Si prega di avvisare.
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);
}
Grazie. Questo compila.Ora per aggiornare i miei test unitari. – YouGotCSharpInMyJava