In einer Klasse verarbeite ich eine Liste von IInterface
.Zusammenführen von zwei Listen von Klassen, die dieselbe Schnittstelle implementieren
Ich möchte die beiden möglichen Implementierungen in einer separaten Art und Weise behandelt werden, daher:
public List<IInterface> Process(List<IInterface> InterfaceList)
{
List<FirstImplementation> FirstList = FirstProcess(InterfaceList.OfType<FirstImplementation>.ToList());
List<SecondImplementation> SecondList = SecondProcess(InterfaceList.OfType<SecondImplementation>.ToList());
return new List<IInterface> {
FirstList,
SecondList
};
}
Ich möchte eine List<IInterface>
, gleich dem Eingang zurückzukehren, beide es stellt sich heraus, schwieriger zu sein als erwartet
return new List<IInterface> {
FirstList,
SecondList
};
compiles aber eine InvalidCastException zur Laufzeit,
return new List<IInterface>.AddRange(FirstList).AddRange(SecondList);
kompiliert nicht ...
Was wäre der richtige Weg, dies zu tun?
Ihr letztes Beispiel fast korrekt ist. Es fehlen Klammern und 'AddRange' hat den Rückgabetyp' void', so dass Sie es nicht verketten können: 'var ret = new Liste(); ret.AddRange (ErsteListe); ret.AddRange (Zweitliste); return ret; ' –