Member 14583379 Ответов: 1

Как передать объект класса в качестве параметра


Привет,

Я хочу сделать запрос soap и присвоить значения productlist, который принимает класс продукта в качестве параметра

[System.Xml.Serialization.XmlArrayItemAttribute("PRODUCT", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
public product[] PRODUCTLIST {
    get {
        return this.pRODUCTLISTField;
    }
    set {
        this.pRODUCTLISTField = value;
        this.RaisePropertyChanged("PRODUCTLIST");
    }
}




Я пытаюсь установить значения таким образом, но это не присваивание значений

sup.PRODUCTLIST[0] = new Supcancel.product
                {
                    Name = "Mouse",
                    Price = 20,
                    Size = "Small",
                    date = date
                };


ошибка, которую я получаю, заключается в следующем
object reference not set to instance of an object



Нужна помощь

Заранее спасибо

Что я уже пробовал:

у меня тридэ этот способ также

sup.PRODUCTLIST[0].Name = "Mouse";
               sup.PRODUCTLIST[0].Price = 20;
               sup.PRODUCTLIST[0].Size = "Small";
               sup.PRODUCTLIST[0].date = date;

Afzaal Ahmad Zeeshan

Какую ошибку вы получаете?

Member 14583379

я получаю эту ошибку ССЫЛКА на объект не установлена на экземпляр объекта

DerekT-P

в чем ценность супа?PRODUCTLIST[0] Перед выполнением вышеуказанного задания? Потому что это все, что вы делаете - присваиваете новое значение первому элементу в sup.Массив PRODUCTLIST. Вы объявили размер этого массива? Или ты хотел, чтобы это был список? В этом случае вам нужно будет добавить его в (определенный) список... "Не установлено на экземпляр объекта" относится к левой стороне, а не к правой!

1 Ответов

Рейтинг:
2

Afzaal Ahmad Zeeshan

Поскольку вы получаете исключение нулевой ссылки, решение просто:

// Create an array of products that it will use.
sup.PRODUCTLIST = new product[10];
Поскольку вы будете добавлять элементы во время выполнения, я настоятельно рекомендую использовать другие универсальные типы, которые могут вместить новые элементы без необходимости перераспределения с вашей стороны, например List<T>.

Код должен был стать:
// Change Product to product, if you really think naming should be that way. 
public List<Product> PRODUCTLIST {
    get {
        return this.pRODUCTLISTField;
    }
    set {
        this.pRODUCTLISTField = value;
        this.RaisePropertyChanged("PRODUCTLIST");
    }
}
Затем в коде вы должны сделать следующее,
sup.PRODUCTLIST = new List<Product>();
Это необходимо в C#, в противном случае NullReferenceException всегда будет повышен, и ваша программа рухнет.

Проверьте эти мои прошлые посты, чтобы узнать больше об этом:
Пустой ссылкой исключение[^]
Проблема с ошибкой "нулевая ссылка" при создании экземпляров класса[^]
как обрабатывать нулевые ссылки и исключения из привязки[^]
Ссылка на объект не задана и экземпляр объекта[^]
Что такое нулевая ошибка при выполнении кода[^]