InvalidCastException и полиморфизм C#

Компьютеры программирование программы C# .net

Я создаю следующий вложенный класс:

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'а?"
Поясните, пожалуйста.

Примечание:
Вопрос снят. Буду по-другому реализовывать.
Ответы:
>// тут реализую все конструкторы System.IO.FileStream
Конструкторы System.IO.FileStream в Вашем классе ASyncIO.FileStream Вы реализовывать не можете. Каждый класс может реализовывать только свои собственные контсрукторы.
>При компиляции выдает "InvalidCastException
InvalidCastException — это исключение времени выполнения, а не ошибка компиляции.
>Вопрос - чем это может быть вызвано?
Тем, что File.Create("some_file.txt") возвращает объект, который не является ASyncIO.FileStream.
>Да, File.Create(string) возвращает объект типа System.IO.FileStream, то есть, родителя моего пользовательского класса.
Если Вы это сами понимаете, то в чём проблема? Вы что ожидали какого-то другого поведения от выполнения downcast'а?


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.