次のような状況があり、混乱しています。
与えられた:
public class ThermoRawFile : MsDataFile { }
public abstract class MSDataFile { }
この LINQ IEnumerable.ToDictionary() メソッドを実行できません。
IEnumerable<string> rawFiles;
Dictionary<string, MSDataFile> dataFiles = rawFiles.ToDictionary(
file => file,
file => new ThermoRawFile(file)
);
コンパイラが次のエラーを出すため:
"Cannot implicitly convert type System.Collections.Generic.Dictionary<string,CSMSL.IO.Thermo.ThermoRawFile> to System.Collections.Generic.Dictionary<string,CSMSL.IO.MSDataFile>"
単純な継承であるのに、なぜ暗黙的に変換できないThermoRawFile
のですか?MSDataFile
これはうまくいきます:
MSDataFile dataFile = new ThermoRawFile("someFile.raw");