クラスでは、IInterface
のリストを処理します。同じインターフェイスを実装するクラスの2つのリストをマージする
私はそれ故、別の方法で処理される2つの可能な実装をしたい:
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
};
}
Iは、List<IInterface>
を返すしたい入力と同様、両方それは予想以上に困難であることが判明したことになります
return new List<IInterface> {
FirstList,
SecondList
};
コンパイルが、実行時にInvalidCastExceptionがスローされます、
return new List<IInterface>.AddRange(FirstList).AddRange(SecondList);
はコンパイルされません。
これを行う正しい方法は何でしょうか? LINQの使用
最後の例はほぼ正しいです。それは括弧がなく、 'AddRange'は戻り値の型が' void'なので、連鎖することはできません: 'var ret = new List(); ret.AddRange(FirstList); ret.AddRange(SecondList); return ret;; –