2015-10-28 2 views
0

Это классический вопрос, но я не понимаю, как это понять в моем коде.C# Классическая ошибка. Объект должен быть установлен

Ссылка на объект не установлена ​​в экземпляр объекта.

Я знаю, что мне нужно написать что-то вроде new IList<SubInvoice>();, но я не вижу, где.

private void GetSub() 
{ 
    var invoice = Selected; 
    var invs = (from i in ctx.Invoices 
       join p in ctx.products on i.refSupp equals p.refsup 
       join u in ctx.units on p.unit equals u.idunit 
       where i.suppInvNumber == invoice.suppInvNumber 
       select new SubInvoice 
       { 
        Invoice = i, 
        description = p.description, 
        unit1 = u.unit1 
       }); 

    if(Products != null) 
    Products.Clear(); 

    if (invs != null) 
     foreach(var inv in invs) 
     { 
      SubInvoice sub = new SubInvoice(){Invoice=inv.Invoice, description = inv.description, unit1 = inv.unit1}; 
      Products.Add(sub); //error 
     } 

} 

private IList<SubInvoice> _products; 

public IList<SubInvoice> Products 
{ 
    get 
    { 
     return _products; 
    } 
    set 
    { 
     _products = value; 
     OnPropertyChanged("Products"); 
    } 
} 

public class SubInvoice 
{ 
    public Invoice Invoice { get; set; } 
    public string description { get; set; } 
    public string unit1 { get; set; } 
} 
+0

Где вы получаете эту ошибку –

+0

Products.Add (суб); – Cantinou

+0

@ M.kazemAkhgary, продукт не перемещается, поэтому не требуется замедление. О, вы имели в виду ** заявление **. :-P – GreatAndPowerfulOz

ответ

3

Заменить ниже:

if(Products != null) 
    Products.Clear(); 

с

if(Products != null) 
    Products.Clear(); 
else 
    Products = new List<SubInvoice>(); 
3
private IList<SubInvoice> _products = new List<SubInvoice>() 
Смежные вопросы