próbuję wykonać następującą obsadąObsada otrzymała obiekt do listy <object> lub IEnumerable <object>
private void MyMethod(object myObject)
{
if(myObject is IEnumerable)
{
List<object> collection = (List<object>)myObject;
... do something
}
else
{
... do something
}
}
Ale zawsze skończyć z następującym excepction:
Nie można rzutować obiektu typu ' System.Collections.Generic.List 1[MySpecificType]' to type 'System.Collections.Generic.List
1 [System.Object] '
Naprawdę potrzebuję tego do działania, ponieważ ta metoda musi być bardzo ogólna, aby otrzymywać pojedyncze obiekty i kolekcje obu nieokreślonych typów.
Czy to możliwe, czy jest inny sposób na osiągnięcie tego.
Dziękuję.
Dziękuję. To zrobiło to. –
@ Sergio, Należy sprawdzić, czy myObject implementuje IList zamiast IEnumerable przed rzutowaniem, jeśli chcesz uniknąć ryzyka błędów w czasie wykonywania. Wiele wbudowanych kolekcji implementuje IEnumerable, ale nie IList (np. Dictionary <>, HashSet <>, Hashtable, Queue, Stack etc). – LukeH
@Luke: Jeśli jest to lista (co jest implikowane przez pytanie), wdroży IList. –
erikkallen