ML.NET中internal类的public与internal属性差异问题求助
ML.NET internal类成员访问异常问题
我在开发ML.NET项目时遇到一个问题:将数据加载到IDataView、应用ONNX模型转换后访问结果的流程中,Input类、Output类及Model类都位于同一程序集且标记为internal。当Input类的属性设为internal时程序报错,将属性改为public(类仍保持internal)则运行正常。
我原本认为internal类的public成员等效于internal,属性/方法设为internal或public不会有区别,但实际存在明显差异。
最小复现代码
using Microsoft.ML; using Microsoft.ML.Data; namespace ConsoleApp1 { internal class InputData { [ColumnName("onnx::Concat_0")] [VectorType(342)] // public float[] XA1 { get; set; } = new float[342]; // 正常运行 internal float[] XA1 { get; set; } = new float[342]; // 报错 } public class OutputData { [ColumnName("onnx::Concat_0")] [VectorType(342)] public float[] XA1 { get; set; } } class Program { static void Main() { var mlContext = new MLContext(); var inputData = new[] { new InputData { XA1 = new float[342] } }; IDataView inputDataView = mlContext.Data.LoadFromEnumerable(inputData); // 模拟ONNX转换管道 var pipeline = mlContext.Transforms.CopyColumns( "onnx::Concat_0", "onnx::Concat_0" ); var model = pipeline.Fit(inputDataView); IDataView transformedData = model.Transform(inputDataView); var transformed = mlContext.Data.CreateEnumerable<OutputData>(transformedData, reuseRowObject: false); foreach (var item in transformed) { Console.WriteLine($"XA1 Length: {item.XA1.Length}"); } } } }
环境信息
- .NET版本:net8.0
- 开发工具:JetBrains Rider 2024.2.6
内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows
相关产品推荐
相关产品推荐

