Это хитрый:)
Когда вы передаете инициализатору объект, содержащий общий список некоторого типа "BusinessObjects" в качестве свойства, тогда это свойство передаст ваш
if (property.PropertyType.IsClass && property.PropertyType != typeof(string) && property.PropertyType.FullName.Contains("BusinessObjects"))
выражение, потому что экземплярный типовой экземпляр будет иметь такое имя:
System.Collections.Generic.List`1[[ConsoleApplication92.XXXBusinessObjects, ConsoleApplication92, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
В результате вызывается метод инициализатора с самим списком в качестве параметра. В списке будет индексатор с именем Item типа SomeBusinessObjects. Это также пройдет вышеупомянутое условие, поэтому вы также попытаетесь инициализировать его. В результате получается что-то вроде этого:
obj.ListProperty.Item = new SomeBusinessObject();
тогда как индексатор может использоваться только при такой инициализации
obj.ListProperty[0] = new SomeBusinessObject();
Это показывает, что на самом деле вам не хватает параметра.
Что вы собираетесь с этим делать, зависит от вас:)