OS>где у меня вылетает ексепшен Unable to cast object of type 'System.Object[]' to type 'LinqTest01.Employee[]'
OS>То есть GetEmployeesArrayList всё возвращает, ToArray() выполняется, а вот приведение к (Employee[]) не проходит.
OS>Так и должно быть и в книге косяк, или я чего-то не понимаю?
Это абсолютно правильное поведение System.Object[] не является предком Employee[]
Могу предложить решение в виде
GetEmployeesArrayList().Cast<Employee>()
Оно возвращает IEnumerable<Employee>.
Re: Unable to cast object of type 'System.Object[]' to type.
От:
Аноним
Дата:
23.07.08 10:29
Оценка:
Здравствуйте, O-Sam, Вы писали:
OS>Доброго времени суток!
OS>Читаю сейчас книгу Pro LINQ, там есть пример кода, который не хочет исполняться на моей 2008-й студии
OS>в классе Employee имеем метод
OS>public static ArrayList GetEmployeesArrayList() {...}
OS>и метод
OS>
OS>где у меня вылетает ексепшен Unable to cast object of type 'System.Object[]' to type 'LinqTest01.Employee[]'
OS>То есть GetEmployeesArrayList всё возвращает, ToArray() выполняется, а вот приведение к (Employee[]) не проходит.
OS>Так и должно быть и в книге косяк, или я чего-то не понимаю?
Один вопрос: а зачем ArrayList использовать? В этом есть тайный смысл?
Re[2]: Unable to cast object of type 'System.Object[]' to ty
Здравствуйте, Аноним, Вы писали:
OS>>Так и должно быть и в книге косяк, или я чего-то не понимаю?
А>Один вопрос: а зачем ArrayList использовать? В этом есть тайный смысл?
Тайный смысл — скомпилировать пример из книги
Re: Unable to cast object of type 'System.Object[]' to type.
Re[2]: Unable to cast object of type 'System.Object[]' to ty
От:
Аноним
Дата:
23.07.08 12:50
Оценка:
Здравствуйте, Хэлкар, Вы писали:
Х>Это абсолютно правильное поведение System.Object[] не является предком Employee[]
Вот интересный пример:
using System;
class Program
{
static void Main()
{
object[] x = new string[]{"A","B"};
object[] y = new object[]{"A","B"};
Console.WriteLine((string[])x); // OK
Console.WriteLine((string[])y); // Exception
}
}
Хотя оба массива хранят только строки.
Re[3]: Unable to cast object of type 'System.Object[]' to ty