0

I have converted some xml into classes using xsd and now I am having an issue getting some data into the array that exists in the class to add a list of items. I am trying to get the info into OrderItemsItem.

A bit stumped, any help appreciated (not really keen on making any changes to the classes if I can get away with it, convert to List<> etc) .

This is the code to add the info:

OrderItemsItem orderItemsItem = new OrderItemsItem();
orderItemsItem.CostCentre = "sfsdf";
orderItemsItem.DeliveryDate = "2014-01-05";
orderItemsItem.Fund = "G";
orderItemsItem.ExternalLineRef = "1";
orderItemsItem.ItemName = "dfss";
orderItemsItem.LineNo = "1";
orderItemsItem.ProdId = "dfsf";
orderItemsItem.Project = "";
orderItemsItem.QuantityOrdered = "2";
orderItemsItem.UnitCost = "10";

Order order = new Order();
OrderItemsItem [] items = {orderItemsItem};
  order.Items.Item = items;

The Error I am receiving is happening on -> order.Items.Item = items;:

System.NullReferenceException: Object reference not set to an instance of an object.

This is the Class:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18444
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Xml.Serialization;

// 
// This source code was auto-generated by xsd, Version=4.0.30319.1.
// 


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="XXXXXXXXX", IsNullable=false)]
public partial class Order {

    private string referenceField;

    private string notesField;

    private string orderDateField;

    private string statusField;

    private OrderItems itemsField;

    private OrderBuyerDetails buyerDetailsField;

    /// <remarks/>
    public string Reference {
        get {
            return this.referenceField;
        }
        set {
            this.referenceField = value;
        }
    }

    /// <remarks/>
    public string Notes {
        get {
            return this.notesField;
        }
        set {
            this.notesField = value;
        }
    }

    /// <remarks/>
    public string OrderDate {
        get {
            return this.orderDateField;
        }
        set {
            this.orderDateField = value;
        }
    }

    /// <remarks/>
    public string Status {
        get {
            return this.statusField;
        }
        set {
            this.statusField = value;
        }
    }

    /// <remarks/>
    public OrderItems Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }

    /// <remarks/>
    public OrderBuyerDetails BuyerDetails {
        get {
            return this.buyerDetailsField;
        }
        set {
            this.buyerDetailsField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
public partial class OrderItems {

    private OrderItemsItem[] itemField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Item")]
    public OrderItemsItem[] Item {
        get {
            return this.itemField;
        }
        set {
            this.itemField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
public partial class OrderItemsItem {

    private string lineNoField;

    private string externalLineRefField;

    private string prodIdField;

    private string itemNameField;

    private string quantityOrderedField;

    private string unitCostField;

    private string deliveryDateField;

    private string costCentreField;

    private string projectField;

    private string fundField;

    /// <remarks/>
    public string LineNo {
        get {
            return this.lineNoField;
        }
        set {
            this.lineNoField = value;
        }
    }

    /// <remarks/>
    public string ExternalLineRef {
        get {
            return this.externalLineRefField;
        }
        set {
            this.externalLineRefField = value;
        }
    }

    /// <remarks/>
    public string ProdId {
        get {
            return this.prodIdField;
        }
        set {
            this.prodIdField = value;
        }
    }

    /// <remarks/>
    public string ItemName {
        get {
            return this.itemNameField;
        }
        set {
            this.itemNameField = value;
        }
    }

    /// <remarks/>
    public string QuantityOrdered {
        get {
            return this.quantityOrderedField;
        }
        set {
            this.quantityOrderedField = value;
        }
    }

    /// <remarks/>
    public string UnitCost {
        get {
            return this.unitCostField;
        }
        set {
            this.unitCostField = value;
        }
    }

    /// <remarks/>
    public string DeliveryDate {
        get {
            return this.deliveryDateField;
        }
        set {
            this.deliveryDateField = value;
        }
    }

    /// <remarks/>
    public string CostCentre {
        get {
            return this.costCentreField;
        }
        set {
            this.costCentreField = value;
        }
    }

    /// <remarks/>
    public string Project {
        get {
            return this.projectField;
        }
        set {
            this.projectField = value;
        }
    }

    /// <remarks/>
    public string Fund {
        get {
            return this.fundField;
        }
        set {
            this.fundField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
public partial class OrderBuyerDetails {

    private string nameField;

    private string emailField;

    private OrderBuyerDetailsBillingAddress billingAddressField;

    /// <remarks/>
    public string Name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }

    /// <remarks/>
    public string Email {
        get {
            return this.emailField;
        }
        set {
            this.emailField = value;
        }
    }

    /// <remarks/>
    public OrderBuyerDetailsBillingAddress BillingAddress {
        get {
            return this.billingAddressField;
        }
        set {
            this.billingAddressField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
public partial class OrderBuyerDetailsBillingAddress {

    private string nameField;

    private string address1Field;

    private string address2Field;

    private string address3Field;

    private string placeField;

    private string countyField;

    private string postCodeField;

    private string countryField;

    private string emailField;

    /// <remarks/>
    public string Name {
        get {
            return this.nameField;
        }
        set {
            this.nameField = value;
        }
    }

    /// <remarks/>
    public string Address1 {
        get {
            return this.address1Field;
        }
        set {
            this.address1Field = value;
        }
    }

    /// <remarks/>
    public string Address2 {
        get {
            return this.address2Field;
        }
        set {
            this.address2Field = value;
        }
    }

    /// <remarks/>
    public string Address3 {
        get {
            return this.address3Field;
        }
        set {
            this.address3Field = value;
        }
    }

    /// <remarks/>
    public string Place {
        get {
            return this.placeField;
        }
        set {
            this.placeField = value;
        }
    }

    /// <remarks/>
    public string County {
        get {
            return this.countyField;
        }
        set {
            this.countyField = value;
        }
    }

    /// <remarks/>
    public string PostCode {
        get {
            return this.postCodeField;
        }
        set {
            this.postCodeField = value;
        }
    }

    /// <remarks/>
    public string Country {
        get {
            return this.countryField;
        }
        set {
            this.countryField = value;
        }
    }

    /// <remarks/>
    public string Email {
        get {
            return this.emailField;
        }
        set {
            this.emailField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="XXXXXXXXX")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="XXXXXXXXX", IsNullable=false)]
public partial class Post_Printondemand_Create_Full_Order_DataSet {

    private Order[] itemsField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Order")]
    public Order[] Items {
        get {
            return this.itemsField;
        }
        set {
            this.itemsField = value;
        }
    }
}

Thank you

1
  • 1
    Unless your Order class initialises the Items property, you won't be able to assign to the Item property of that. Did you mean to assign directly to Items rather than Items.Item? Commented Dec 8, 2014 at 11:17

2 Answers 2

1
 order.Items.Item = items

The error must be that some order among your orders have its Items collection null (and thus making it not possible to access its "Item" property).

Sign up to request clarification or add additional context in comments.

1 Comment

Whats strange about this, is that order.Items refers to a collection, order.Items.Item refers to a specific item.... Usually I would expect order.Items.AddRange() to be called, then access via LINQ or foreach or something similar.
0

My suspicion is that in your example order.Items is null - you will need to attach a debugger and examine the variables yourself to determine the root cause of your null ref. Ensure that the array is not null before working with it.

in your example you're overriding an element of an array. This will either replace the existing element (if it exists) or (I believe) throw an IndexOutOfBoundsException if it doesn't.

Arrays are generally for fixed lengths of data, ones which you don't append/remove data from frequently. Lists are a better collection to use as they have Add() and Remove() functions for specifically this reason.

It is possible to "append" to C# arrays

order.Items = Order.Items.Union(new Item[]{myNewItem}));

However it's not very nice and creates a new array by merging the old ones! My advice... make the collection a list!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.