我在想,如果我這樣做的權利,但我使用CsvHelper並具有以下流利類映射定義:CsvHelper流利的類映射ConstructUsing()在引用的映射中被忽略?
internal class WasteEstimationGenericDayCsvMap : CsvClassMap<WasteEstimationGenericDay>
{
public WasteEstimationGenericDayCsvMap(WasteEstimationGenericDay dayModel)
{
var qualityModel = dayModel.Quality;
ConstructUsing(() => new WasteEstimationGenericDay(dayModel.ModelUnitContext));
Map(m => m.InflowVolume).Name(dayModel.GetPropertyDisplayName(() => dayModel.InflowVolume));
References<WasteStreamQualityCsvMap>(m => m.Quality, qualityModel);
}
}
internal class WasteStreamQualityCsvMap : CsvClassMap<WasteStreamQuality>
{
public WasteStreamQualityCsvMap(WasteStreamQuality qualityModel)
{
ConstructUsing(() => new WasteStreamQuality(qualityModel.ModelUnitContext));
Map(m => m.TotalNitrogen).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.TotalNitrogen));
Map(m => m.TotalPhosphorus).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.TotalPhosphorus));
Map(m => m.TotalDissolvedSalts).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.TotalDissolvedSalts));
Map(m => m.VolatileSolids).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.VolatileSolids));
Map(m => m.TotalSolids).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.TotalSolids));
Map(m => m.ElectricalConductivity).Name(qualityModel.GetPropertyDisplayName(() => qualityModel.ElectricalConductivity));
}
}
這些類映射被設計成能夠動態的列名沒有特定的順序映射到我的類型WasteEstimationGenericDay
,然而問題是在將值映射到我需要指定這些值所在單位的類型之前,這就是爲什麼在每個類映射中指定ConstructUsing()
以在構建映射類型期間設置單位。
但是對於WasteStreamQuality
類型的屬性WasteEstimationGenericDay.Quality, the
的引用類映射,ConstructUsing()語句永遠不會被調用,並且未指定單位。有誰知道我是否在我的映射配置中做錯了什麼?或者這是一個錯誤/限制在CsvHelper?
我也試着註冊了這兩個類上的配置分別映射像這樣:
csvReaderConfig.RegisterClassMap(new WasteEstimationGenericDayCsvMap(dayModel));
csvReaderConfig.RegisterClassMap(new WasteStreamQualityCsvMap(dayModel.Quality));
但它似乎沒有任何影響,除非它是在呼喚CsvReader.GetRecords<T>()
時所指定的類型。
感謝您的任何幫助。