2016-11-18 4 views
-2

У меня есть следующие классы:Список содержит недопустимые аргументы

public class Selections 
{ 
    public List<Selection> selection { get; set; } 
} 

public class Selection 
{ 
    public Promotion promotion { get; set; } 
    public Products products { get; set; } 
} 

public class Products 
{ 
    public List<int> productId { get; set; } 
} 

Я создаю список и присвоение значений свойств, но когда я добавляю список Я получаю сообщение об ошибке:

The best overloaded method match for 'System.Collections.Generic.List.Add(Selection)' has some invalid arguments

C# код :

Selections productSelections = new Selections(); 
List<Selection> listOfProductSelections = new List<Selection>(); 
Selection dataSelection = new Selection() 
{ 
    promotion = new ProviderModels.Common.Promotion() 
    { 
     promotionID = Convert.ToInt32(applicablePromotion.PromotionId), 
     lineOfBusiness = applicablePromotion.LineOfBusiness 
    }, 
    products = new ProviderModels.Common.Products() 
    { 
     productId = GetIdsOfSelectedProducts(context, selectedOffer) 
    } 
}; 
productSelections.selection.Add(listOfProductSelections); 

Я пропустил что-то?

ответ

1

Вы добавляете список в другой список. Вы хотите добавить элементы списка.

Вместо

productSelections.selection.Add(listOfProductSelections); 

записи

productSelections.selection.AddRange(listOfProductSelections); 

Но вы должны быть уверены, что вы инициализирован selection свойство в этой точке, в противном случае вы будете работать в NullReferenceException.

Кстати, проверьте все свои сообщения об ошибках. Вы увидите второе сообщение с сообщением о том, какой тип будет проверен и что вы используете.

+0

Хорошо. но до этого я должен добавить 'listOfProductSelections.Add (dataSelection)' также. Правильно? Также я запускаю исключение ссылочной ссылки, хотя я инициализировал 'Selection dataSelection = new Selection()' –

+0

В приведенном выше коде вы вызываете 'AddRange'on' productSelections.selection'. Если это свойство не инициализировано, оно будет «null». Таким образом, вы столкнетесь с Исключением. – Sefe

0

вы должны использовать AddRange, так как listOfProductSelections - это список.

productSelections.selection.AddRange(listOfProductSelections) 
0

productSelections.selection является ссылкой на список, consquently при попытке добавить элемент к нему (последняя строка вашего примера), Добавить метод ожидает параметр типа Выбор - вы Прохождение listOfProductSelections, который является ссылкой на другой список.

Возможно, вы хотите добавить dataSelection которые требуются? Если нет, вы можете использовать AddRange, как предложили другие респонденты.

Смежные вопросы