Мой класс ввода находится в той же сборке, что и мой класс вывода. и как мой класс модели. Я отмечаю свой класс ввода как внутренний. Я помечаю свойства класса ввода как внутренние, и у меня возникает ошибка. Когда я отмечаю свои свойства как общедоступные (класс по-прежнему является внутренним), это работает.
Я думал, что если класс помечен как внутренний, не будет никакой разницы, являются ли свойства/методы внутренними или общедоступными (цитата: «публичный член внутреннего класса фактически является внутренним».). Очевидно, что да.
Вот минимальный воспроизводимый пример:
Код: Выделить всё
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]; // Works
internal float[] XA1 { get; set; } = new float[342]; // Fails
}
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);
// Simulate an ONNX transformation pipeline
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(transformedData, reuseRowObject: false);
foreach (var item in transformed)
{
Console.WriteLine($"XA1 Length: {item.XA1.Length}");
}
}
}
}
- Я использую net8.0.
- Я использую JetBrains Rider 2024.2.6.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -otherwise