diff --git a/src/Microsoft.ML.Data/Data/DataViewUtils.cs b/src/Microsoft.ML.Data/Data/DataViewUtils.cs index 829118a430..dd06a4610a 100644 --- a/src/Microsoft.ML.Data/Data/DataViewUtils.cs +++ b/src/Microsoft.ML.Data/Data/DataViewUtils.cs @@ -1123,9 +1123,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active."); Ch.CheckParam(column.Index < _colToActive.Length, nameof(column), "requested column is not active or valid for the Schema."); - var getter = _getters[_colToActive[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActive[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } @@ -1312,9 +1314,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active"); Ch.CheckParam(column.Index < _colToActive.Length, nameof(column), "requested column not active or is invalid for the schema. "); - var getter = _getters[_colToActive[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActive[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs index 32c9e34cb6..94e6f79720 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoader.cs @@ -2035,9 +2035,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index < _colToActivesIndex.Length, nameof(column), "requested column not active."); - var getter = _pipeGetters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _pipeGetters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs b/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs index f19d96830f..7d029c96a8 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Database/DatabaseLoaderCursor.cs @@ -4,6 +4,7 @@ using System; using System.Data.Common; +using System.Linq; using Microsoft.ML.Internal.Utilities; using Microsoft.ML.Runtime; @@ -158,9 +159,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index < _getters.Length, nameof(column), "requested column not valid."); Ch.Check(IsColumnActive(column)); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs index 5cdca75e86..d784d280eb 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Text/TextLoaderCursor.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -318,9 +319,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index < _getters.Length, nameof(column), "requested column not valid."); Ch.Check(IsColumnActive(column)); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs index 6339333cef..8a0ee23f1a 100644 --- a/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs +++ b/src/Microsoft.ML.Data/DataLoadSave/Transpose/TransposeLoader.cs @@ -693,7 +693,8 @@ public override ValueGetter> GetGetter() { ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } @@ -883,9 +884,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.CheckParam(column.Index <= _colToActivesIndex.Length && IsColumnActive(column), nameof(column), "requested column not active"); Ch.AssertValue(_getters[_colToActivesIndex[column.Index]]); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs b/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs index 0773507497..793b2eba13 100644 --- a/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs +++ b/src/Microsoft.ML.Data/DataView/AppendRowsDataView.cs @@ -190,9 +190,12 @@ public sealed override ValueGetter GetGetter(DataViewSchema.Colu { Ch.CheckParam(column.Index <= Getters.Length && IsColumnActive(column), nameof(column), "requested column not active"); - if (!(Getters[column.Index] is ValueGetter)) - throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}'"); - return Getters[column.Index] as ValueGetter; + var originGetter = Getters[column.Index]; + var getter = originGetter as ValueGetter; + if (getter == null) + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); + return getter; } /// diff --git a/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs b/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs index e4b7b754f2..e5aa1383d8 100644 --- a/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs +++ b/src/Microsoft.ML.Data/DataView/ArrayDataViewBuilder.cs @@ -325,9 +325,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Check(column.Index < Schema.Count); Ch.Check(column.Index < _active.Length && _active[column.Index], "the requested column is not active"); - var columnValue = _view._columns[column.Index] as Column; + var originColumnValue = _view._columns[column.Index]; + var columnValue = originColumnValue as Column; if (columnValue == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originColumnValue.Type.RawType}'."); return (ref TValue value) => diff --git a/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs b/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs index e1cde83032..623591556a 100644 --- a/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs +++ b/src/Microsoft.ML.Data/DataView/BatchDataViewMapperBase.cs @@ -122,7 +122,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataView/CacheDataView.cs b/src/Microsoft.ML.Data/DataView/CacheDataView.cs index dffa6aa4dd..a0f5ad4d31 100644 --- a/src/Microsoft.ML.Data/DataView/CacheDataView.cs +++ b/src/Microsoft.ML.Data/DataView/CacheDataView.cs @@ -1206,9 +1206,11 @@ public sealed override ValueGetter GetGetter(DataViewSchema.Colu Ch.CheckParam(column.Index <= _colToActivesIndex.Length && IsColumnActive(column), nameof(column), "requested column not active"); Ch.Check(_colToActivesIndex[column.Index] < _getters.Length); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs b/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs index 8d79076c05..9846587f3d 100644 --- a/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs +++ b/src/Microsoft.ML.Data/DataView/DataViewConstructionUtils.cs @@ -427,7 +427,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Contracts.AssertValue(getter); var fn = getter as ValueGetter; if (fn == null) - throw Host.Except("Invalid TValue in GetGetter for column #{0}: '{1}'", column, typeof(TValue)); + throw Host.Except($"Invalid TValue in GetGetter for column #{column}: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs b/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs index efb86af7ca..3747e361ff 100644 --- a/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs +++ b/src/Microsoft.ML.Data/DataView/RowToRowMapperTransform.cs @@ -333,10 +333,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -402,7 +404,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/DataView/Transposer.cs b/src/Microsoft.ML.Data/DataView/Transposer.cs index 0d317f0887..c30843e37a 100644 --- a/src/Microsoft.ML.Data/DataView/Transposer.cs +++ b/src/Microsoft.ML.Data/DataView/Transposer.cs @@ -317,7 +317,8 @@ public override ValueGetter> GetGetter() _getter = GetGetterCore(); ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } @@ -1167,9 +1168,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Contracts.Check(IsColumnActive(column) && column.Index < _getters.Length); Contracts.AssertValue(_getters[column.Index]); - var fn = _getters[column.Index] as ValueGetter; + var originFn = _getters[column.Index]; + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -1501,7 +1504,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu var getter = _getter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs b/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs index 1bc5561942..ad3f87441f 100644 --- a/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs +++ b/src/Microsoft.ML.Data/Scorers/RowToRowScorerBase.cs @@ -300,7 +300,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs index bacc0a888b..1dc8ad878e 100644 --- a/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/GenerateNumberTransform.cs @@ -439,10 +439,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs index 7731135d12..e14c07d2ab 100644 --- a/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs +++ b/src/Microsoft.ML.Data/Transforms/LabelConvertTransform.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Linq; using System.Text; using System.Threading; using Microsoft.ML; @@ -223,7 +224,8 @@ public override ValueGetter> GetGetter() { ValueGetter> getter = _getter as ValueGetter>; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/Transforms/NAFilter.cs b/src/Microsoft.ML.Data/Transforms/NAFilter.cs index 620594fb13..5d24f7fa93 100644 --- a/src/Microsoft.ML.Data/Transforms/NAFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/NAFilter.cs @@ -426,9 +426,11 @@ private bool TryGetColumnValueGetter(int col, out ValueGetter fn return false; } - fn = _values[index].GetGetter() as ValueGetter; + var originFn = _values[index].GetGetter(); + fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return true; } diff --git a/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs b/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs index 8c5322bc19..703b574f90 100644 --- a/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/PerGroupTransformBase.cs @@ -305,7 +305,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.Assert(getter != null); var fn = getter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs index a1faa00ef2..db131a782e 100644 --- a/src/Microsoft.ML.Data/Transforms/RangeFilter.cs +++ b/src/Microsoft.ML.Data/Transforms/RangeFilter.cs @@ -321,9 +321,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (column.Index != Parent._index) return Input.GetGetter(column); - var fn = GetGetter() as ValueGetter; + var originFn = GetGetter(); + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs index 090a34049e..050dfb8753 100644 --- a/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs +++ b/src/Microsoft.ML.Data/Transforms/RowShufflingTransformer.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; @@ -731,9 +732,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index < _colToActivesIndex.Length, nameof(column)); Ch.CheckParam(_colToActivesIndex[column.Index] >= 0, nameof(column), "requested column not active"); - ValueGetter getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + + var originGetter = _getters[_colToActivesIndex[column.Index]]; + ValueGetter getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } } diff --git a/src/Microsoft.ML.Data/Transforms/TransformBase.cs b/src/Microsoft.ML.Data/Transforms/TransformBase.cs index 3fe8d0bc37..8d21772607 100644 --- a/src/Microsoft.ML.Data/Transforms/TransformBase.cs +++ b/src/Microsoft.ML.Data/Transforms/TransformBase.cs @@ -229,10 +229,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -901,10 +903,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs index c5fc0f038b..f5bc2d7db0 100644 --- a/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs +++ b/src/Microsoft.ML.Featurizers/TimeSeriesImputerDataView.cs @@ -792,9 +792,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { _ch.Check(IsColumnActive(column)); - var fn = _allColumns[column.Name].GetGetter() as ValueGetter; + var originFn = _allColumns[column.Name].GetGetter(); + var fn = originFn as ValueGetter; if (fn == null) - throw _ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw _ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Parquet/ParquetLoader.cs b/src/Microsoft.ML.Parquet/ParquetLoader.cs index 443367089f..54a109396a 100644 --- a/src/Microsoft.ML.Parquet/ParquetLoader.cs +++ b/src/Microsoft.ML.Parquet/ParquetLoader.cs @@ -599,9 +599,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(IsColumnActive(column), nameof(column), "requested column not active"); - var getter = _getters[_colToActivesIndex[column.Index]] as ValueGetter; + var originGetter = _getters[_colToActivesIndex[column.Index]]; + var getter = originGetter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs index 863662eeed..77cf72f92e 100644 --- a/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs +++ b/src/Microsoft.ML.Parquet/PartitionedFileLoader.cs @@ -421,11 +421,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.Check(IsColumnActive(column)); - var getter = _getters[column.Index] as ValueGetter; + var originGetter = _getters[column.Index]; + var getter = originGetter as ValueGetter; if (getter == null) - { - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); - } + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{originGetter.GetType().GetGenericArguments().First()}'."); return getter; } diff --git a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs index 4ffe27b31f..bbfa20e7c2 100644 --- a/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs +++ b/src/Microsoft.ML.TimeSeries/SequentialTransformerBase.cs @@ -987,10 +987,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return _input.GetGetter(column); - Contracts.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Contracts.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Contracts.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Contracts.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } @@ -1061,7 +1063,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.AssertValue(getter); if (getter is ValueGetter fn) return fn; - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{getter.GetType().GetGenericArguments().First()}'."); } protected override void Dispose(bool disposing) diff --git a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs index 98b100c15f..dc4ddb3a82 100644 --- a/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs +++ b/src/Microsoft.ML.Transforms/OptionalColumnTransform.cs @@ -485,10 +485,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (_getters[index] == null) return Input.GetGetter(_bindings.AsSchema[_bindings.SrcCols[index]]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/ProduceIdTransform.cs b/src/Microsoft.ML.Transforms/ProduceIdTransform.cs index f9062319ce..f495215e37 100644 --- a/src/Microsoft.ML.Transforms/ProduceIdTransform.cs +++ b/src/Microsoft.ML.Transforms/ProduceIdTransform.cs @@ -219,7 +219,8 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu Ch.AssertValue(idGetter); var fn = idGetter as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{idGetter.GetType().GetGenericArguments().First()}'."); return fn; } } diff --git a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs index 9b94c859bb..cb0e0b20ed 100644 --- a/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs +++ b/src/Microsoft.ML.Transforms/StatefulCustomMappingTransformer.cs @@ -318,10 +318,12 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu if (isSrc) return Input.GetGetter(Input.Schema[index]); - Ch.Assert(_getters[index] != null); - var fn = _getters[index] as ValueGetter; + var originFn = _getters[index]; + Ch.Assert(originFn != null); + var fn = originFn as ValueGetter; if (fn == null) - throw Ch.Except("Invalid TValue in GetGetter: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue in GetGetter: '{typeof(TValue)}', " + + $"expected type: '{originFn.GetType().GetGenericArguments().First()}'."); return fn; } diff --git a/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs b/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs index aaa116498b..346d0acd8d 100644 --- a/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs +++ b/src/Microsoft.ML.Transforms/SvmLight/SvmLightLoader.cs @@ -480,9 +480,11 @@ public override ValueGetter GetGetter(DataViewSchema.Column colu { Ch.CheckParam(column.Index == 0, nameof(column)); Ch.CheckParam(_isActive, nameof(column), "requested column not active"); + ValueGetter getter = _getter as ValueGetter; if (getter == null) - throw Ch.Except("Invalid TValue: '{0}'", typeof(TValue)); + throw Ch.Except($"Invalid TValue: '{typeof(TValue)}', " + + $"expected type: '{_getter.GetType().GetGenericArguments().First()}'."); return getter; }