0

I cannot seem to work out how to populate a sub class...

These are the classes I have:

public class Item
{
    public Meta meta { get; set; }
    public Items[] objects { get; set; }
}

public class Meta
{
    public int limit { get; set; }
    public object next { get; set; }
    public int offset { get; set; }
    public object previous { get; set; }
    public int total_count { get; set; }
}

public class Items
{
    public Additionalprices additionalPrices { get; set; }
    public string barcode { get; set; }
    public Category category { get; set; }
    public int categoryPosition { get; set; }
    public string cdate { get; set; }
    public DateTime ctime { get; set; }
    public DateTime ctimeOnServer { get; set; }
    public Dimensions dimensions { get; set; }
    public string entityType { get; set; }
    public object imageURL { get; set; }
    public object[] imageURLs { get; set; }
    public string longDesc { get; set; }
    public string manufacturer { get; set; }
    public int minQty { get; set; }
    public DateTime mtime { get; set; }
    public DateTime mtimeOnServer { get; set; }
    public int multQty { get; set; }
    public string name { get; set; }
    public int objID { get; set; }
    public string owner { get; set; }
    public string resource_uri { get; set; }
    public string sku { get; set; }
    public object thumbnailURL { get; set; }
    public object[] thumbnailURLs { get; set; }
    public string unitPrice { get; set; }
    public string uuid { get; set; }
    public Variant[] variants { get; set; }
}

I want to add some dummy objects...

This is the code I have...

// Create a dummy Category
HandShake_Classes.Category categoryToUpload = new HandShake_Classes.Category();

categoryToUpload.name = "Trev Category";

// Create a dummy Item
HandShake_Classes.Item itemToUpload = new HandShake_Classes.Item();

// THIS IS WHERE MY PROBLEM IS...
itemToUpload.objects = new HandShake_Classes.Items();
// THE ERROR I AM GETTING IS Error  2   Cannot implicitly convert type 'handshake.com.HandShake_Classes.Items' to 'handshake.com.HandShake_Classes.Items[]'

// Only populate required fields at the moment
itemToUpload.objects[0].sku = "ljklj";
itemToUpload.objects[0].name = "Trevs Product";
itemToUpload.objects[0].unitPrice = "1.23";
itemToUpload.objects[0].minQty = 1;
itemToUpload.objects[0].category = categoryToUpload;

I just cannot work out how define the Items[] I think

Can anyone point me in the right direction please?

Thanks

1
  • Since you have defined the Items object as an Array, you must instantiate it like in th answers below. I would, however, suggest you to change it to a List<Items>. It might provide much more flexibility. Commented Oct 9, 2013 at 9:27

2 Answers 2

2

You have to initialize the array first. Let's say you need 10 items:

itemToUpload.objects = new HandShake_Classes.Items[10];

And then you can set every array item to the new Items() instance:

itemToUpload.objects[0] = new HandShake_Classes.Items();
itemToUpload.objects[0].sku = "ljklj";
itemToUpload.objects[0].name = "Trevs Product";
itemToUpload.objects[0].unitPrice = "1.23";
itemToUpload.objects[0].minQty = 1;
itemToUpload.objects[0].category = categoryToUpload;

And just to make it clear: if you don't know how many items object property will have to handle, you should consider changing it to List<Items> instead of Items[] array:

itemToUpload.objects = new List<HandShake_Classes.Items>();

var newItem = new HandShake_Classes.Items();
newItem = new HandShake_Classes.Items();
newItem.sku = "ljklj";
newItem.name = "Trevs Product";
newItem.unitPrice = "1.23";
newItem.minQty = 1;
newItem.category = categoryToUpload;

itemToUpload.objects.Add(newItem);
Sign up to request clarification or add additional context in comments.

1 Comment

thanks - I agree and have changed it to List<Items> - what should I do now to initialise it please?
1

Instantiate the array of type items as

itemToUpload.objects = new HandShake_Classes.Items[10];

After this instantiation, you would require to instantiate every index of the object.

For example

itemToUpload.objects[i] = new HandShake_Classes.Items();

This means you are instantiating a single object, and that object would be in array at index 'i'.

you can then set the properties of the Items in objects array by writing as

itemToUpload.objects[i].barcode

even call the functions

itemToUpload.objects[i].CalculateTax()

similarly you can use any constructors if defined.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.