Я создаю следующий вложенный класс:
public static class ASyncIO {
public class FileStream : System.IO.FileStream {
// тут реализую все конструкторы System.IO.FileStream
// тут добавляю свои переменные
// тут перегружаю метод void WriteByte(byte)
// тут дописываю private метод
}
}
Далее, в Main() я делаю следующее:
ASyncIO.FileStream streamName = (ASyncIO.FileStream)File.Create("some_file.txt");
При компиляции выдает "InvalidCastException, не удалось привести тип объекта "System.IO.FileStream" к типу "FileStream".
Вопрос - чем это может быть вызвано? И где, собственно, полиморфизм?
Примечание:
---
">// тут реализую все конструкторы System.IO.FileStream
Конструкторы System.IO.FileStream в Вашем классе ASyncIO.FileStream Вы реализовывать не можете. Каждый класс может реализовывать только свои собственные контсрукторы.
>При компиляции выдает "InvalidCastException
InvalidCastException — это исключение времени выполнения, а не ошибка компиляции."
---
Извините за ошибку в терминах.
---
Тем, что File.Create("some_file.txt") возвращает объект, который не является ASyncIO.FileStream.
---
Да, File.Create(string) возвращает объект типа System.IO.FileStream, то есть, родителя моего пользовательского класса.
Примечание:
PetSerAl (Сергей Петров)
"Вы что ожидали какого-то другого поведения от выполнения upcast'а?"
Поясните, пожалуйста.
Примечание:
Вопрос снят. Буду по-другому реализовывать.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.