当我将泛型类型传递给 IEnumerable 时,LoadFromEnumerable 出现错误

问题描述 投票:0回答:0

这对已知类型工作正常:但我的要求是我需要传递通用类型..请帮助

var jsonData = JsonConvert.DeserializeObject<IEnumerable<ModelName>>(smalljson);

但是当我将模型设为通用时,我在 LoadFromENumerable 和 CreateEnumerable 收到此错误:

类型“T”必须是引用类型才能将其用作泛型类型或方法“DataOperationsCatalog.LoadFromEnumerable”中的参数“TRow”

代码:

 public async Task<SplitDatasets> SplitDataset<T>(Guid scheduleId, Guid assessmentId, string inputJson, int trainPercentage, string model)
        {
          
        
                    dynamicProtoList json = JsonConvert.DeserializeObject<dynamicProtoList>(inputJson);
                    string smalljson = JsonConvert.SerializeObject(json.samples);

                    var context = new MLContext();

                    var jsonData = JsonConvert.DeserializeObject<IEnumerable<T>>(smalljson);

                    IDataView dataView = context.Data.LoadFromEnumerable(jsonData);
                    double perc = trainPercentage / 100.0;

                    DataOperationsCatalog.TrainTestData dataSplit = context.Data.TrainTestSplit(dataView, testFraction: perc);
                    SplitDatasets splitDatasets;

                    return splitDatasets = new SplitDatasets()
                    {
                        TestDataset = JsonConvert.SerializeObject(context.Data.CreateEnumerable<T>(dataSplit.TestSet, reuseRowObject: true)),
                        TrainDataset = JsonConvert.SerializeObject(context.Data.CreateEnumerable<T>(dataSplit.TrainSet, reuseRowObject: true))
                    };
                
          
            

        }

从下面我调用这个方法

splitDatasets = await SplitDataset<MSG>(projectConfig.ScheduleId, projectConfig.AssessmentId, json,projectConfig.Evaluation_Split,projectConfig.Model);
c# generics ienumerable ml.net enumerable
© www.soinside.com 2019 - 2024. All rights reserved.