Получение 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;