Получение NBuilder для создания списка списков

Я получаю несоответствие количества параметров с NBuilder, в основном пытаясь создать список списков, кажется, не могу найти каких-либо примеров использования NBuilder для этого:

public class MyClass
{
   public IEnumerable<IEnumerable<int>> Matrix { get; set; }
}

_myClass.Matrix = Builder<List<int>>.CreateListOfSize(10).Build();

System.Reflection.TargetParameterCountException : Parameter count mismatch.

2 ответа

Решение

Вы не можете создать список списков с помощью NBuilder - он не может инициализировать свойства параметра универсального типа, который List<int> в твоем случае. NBuilder находит свойство indexer в списке и пытается инициализировать его значение следующим образом (вы можете найти исходный код здесь):

propertyInfo.SetValue(obj, value, null);

Но для индексатора свойство index должно быть передано в последнем параметре. Это вызывает исключение Parameter count mismatch,


Вот как вы можете инициализировать матрицу:

_myClass.Matrix = Enumerable.Repeat(Enumerable.Range(0, 100).ToList(), 100);

Или с NBuilder

_myClass.Matrix = Enumerable.Repeat(Builder<int>.CreateListOfSize(100).Build(), 100);

Хорошо, не могу использовать NBuilder из того, что я могу сказать, кто-то поправил меня, но это решило проблему,

// basically create a matrix of 100x100 for instance
var innerList = Enumerable.Repeat(0, 100);
var list = Enumerable.Repeat(innerList, 100);
_myClass.Matrix = list;
Другие вопросы по тегам