ich hab ein Hashtable (HT) dessen Value´s DataView´s sind...
wenn ich mit
MessageBox.Show(HT[this.listView.FocusedItem.Text].ToString());
zeigt er mir auch an das es DataView´s sind ...
wenn ich aber folgendes probiere
foreach(DataRowView zeile in HT[this.listView.FocusedItem.Text])
{
}
kommt eine fm: " das object hat keine definition für GetEnumerator"!
setze ich dann ein (DataView) ein funtzt es, wieso ????
foreach(DataRowView zeile in (DataView)HT[this.listView.FocusedItem.Text])
{
}
Hi,
ich schätze das du die Fehlermeldung bekommst weil in der Hashtable Objekte
vom Typ object gespeichert sind. Du musst das Objekt in deinem Fall erst wieder
in ein DataView umwandeln damit auch alle Eigenschaften und Methoden zur
Verfügung stehen.
Viele Grüße
Roland
C# ist eben komplett typsicher. object definiert nicht die Schnittstelle IEnumerable, die für das Durchlaufen von foreach notwendig ist. Ein typunabhängiges foreach könnte so aussehen:
object element = HT[this.listView.FocusedItem.Text];
if (element is IEnumerable)
{
foreach (object obj in (IEnumerable) element)
{
Console.WriteLine(obj);
}
}
([bb]|[^b]{2})
Weil die ToString() Methode virtual von object vererbt wird und in den einzelnen Klassen mit override überschrieben wird. Deshalb wird bei einer Variablen die vom Typ object ist und eine DataView die als object gecastet wurde beeinhaltet die Methode ToString() von DataView und nicht von object aufgerufen.