Reputation: 61727
Can't figure this one out
I have an ArrayList of classes:
// Holds an image
public class productImage
{
public int imageID;
public string imageURL;
public DateTime dateAdded;
public string slideTitle;
public string slideDescrip;
}
public ArrayList productImages = new ArrayList();
productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);
Now how do I access the property?
int something = productImages[0].imageID
Doesn't work!
Error 1 'object' does not contain a definition for 'slideTitle' and no extension method 'slideTitle' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
Upvotes: 2
Views: 7253
Reputation: 48137
Just to get this code up with modern idioms:
public ArrayList productImages = new ArrayList();
productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);
can be re-written as:
var productImages = new List<ProductImage> { new ProductImage { ImageID = 123 } };
Upvotes: 0
Reputation: 81660
try:
int something = ((productImage)productImages[0]).imageID;
Needs to be casted from the type object.
Upvotes: 1
Reputation: 754745
The values in an ArrayList
are typed to Object
. You need to cast to productImage
to access the property.
int something = ((productImage)productImages[0]).imageId;
A much better solution though is to used a strongly typed collection like List<T>
. You can specify the element type is productImage
and avoid the casting altogether.
public List<productImage> productImages = new List<productImage>();
productImage newImage = new productImage();
newImage.imageID = 123;
productImages.Add(newImage);
int something = productImages[0].imageID; // Works
Upvotes: 11