2016-01-20 67 views
0

我在想,如果我這樣做的權利,但我使用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>()時所指定的類型。

感謝您的任何幫助。

回答

0

之後也發佈了這個問題作爲一個issue我得到了以下回應:

從源頭上採取快速瀏覽一下(因爲我沒有一臺計算機的時刻,以測試它),它看起來像沒有實施,但應該是一個相當快的事情。