我有以下情况让我感到困惑。
鉴于:
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");