<cannot view indexed property>

  • Thread starter Thread starter Mike
  • Start date Start date
M

Mike

Hi,

I have created a collection of a custom class. Everything works fine (can add these items in a combo from within a VB.NET application, for instance), but when looking at the collection from a VB.NET application in the Watch window, I cannot see the items of the collection. The message in the Watch window's "value" says: "<cannot view indexed property>." Below is the code I wrote.

Any idea of what is wrong? Or is the error message "correct"?

Thanks a lot.
Mike




public class Companies : IEnumerable {

ArrayList m_oCompanies = null;

public Companies() { // Nothing is done in the constructor. }
public void Add(Company oCompany) {...}
public Company this[int index] {
get { return (Company)m_oCompanies[index]; }
}

public int Count { ... }

}

public IEnumerator GetEnumerator() { return new CompaniesEnumerator(m_oCompanies); }

// Inner class implements IEnumerator interface:
class CompaniesEnumerator : IEnumerator {

int index;
ArrayList m_oCompanies;

public CompaniesEnumerator(ArrayList oCompanies) { this.m_oCompanies = oCompanies; }

public bool MoveNext() { return (++index < m_oCompanies.Count); }

public object Current {
get {
if (index < m_oCompanies.Count) return m_oCompanies[index];
else
return null; }
}

public void Reset() { ... }
 
Mike,

The watch window cannot view properties that have an indexer. If you need to
see the contents of an indexed property, specify the index as part of the
watch.

e.g.

m_oCompanies.Item(0)

You'll get an exception if the index you specify is out of range.

On a side note, I didn't know you could compile C# code with VB.net ;) (your
source is c#, but your post refers to VB)

HTH,

Trev.



Hi,

I have created a collection of a custom class. Everything works fine (can
add these items in a combo from within a VB.NET application, for instance),
but when looking at the collection from a VB.NET application in the Watch
window, I cannot see the items of the collection. The message in the Watch
window's "value" says: "<cannot view indexed property>." Below is the code I
wrote.

Any idea of what is wrong? Or is the error message "correct"?

Thanks a lot.
Mike




public class Companies : IEnumerable {
ArrayList m_oCompanies = null;

public Companies() { // Nothing is done in the constructor. }
public void Add(Company oCompany) {...}
public Company this[int index] {
get { return (Company)m_oCompanies[index]; }
}
public int Count { ... }
}
public IEnumerator GetEnumerator() { return new
CompaniesEnumerator(m_oCompanies); }
// Inner class implements IEnumerator interface:
class CompaniesEnumerator : IEnumerator {
int index;
ArrayList m_oCompanies;
public CompaniesEnumerator(ArrayList oCompanies) { this.m_oCompanies =
oCompanies; }
public bool MoveNext() { return (++index < m_oCompanies.Count); }
public object Current {
get {
if (index < m_oCompanies.Count) return m_oCompanies[index];
else
return null; }
}
public void Reset() { ... }
 
Back
Top