我想从复杂的对象中创建一个IDataView
。
让我的对象成为这些简单的类:
class Foo
{
public Bar bar { get; set; }
}
class Bar
{
public int num { get; set; }
}
(当然,在我的代码中Foo
中还有更多字段,其中有些是对象或集合)。
现在,我尝试使用DataOperationsCatalog.LoadFromEnumerable
加载Foo
的集合:
var mlContext = new MLContext();
var foos = new List<Foo>
{
new Foo
{
bar = new Bar {num = 5}
},
new Foo
{
bar = new Bar {num = 5}
}
}.AsEnumerable();
var dataview = mlContext.Data.LoadFromEnumerable(foos);
我得到了错误:
System.ArgumentOutOfRangeException:无法确定成员 bar 的IDataView类型 参数名称:rawType
即使将 Bar
对象注册为DataViewType
,也没有任何改善:
DataViewTypeManager.Register(NumberDataViewType.Int32, typeof(Bar));