Я пытаюсь понять наследование в приложении MVC, и у меня есть несколько вещей, которые я хотел бы прояснить, если кто-то может помочь.Наследование и классы BASE в ASP.NET MVC
Вопрос 1
Если у меня есть следующие три класса, которые наследуют друг от друга следующим образом
Public class StandardPage
Public class ArticlePage : StandardPage
Public class NewsPage : ArticlePage
класса StandardPage единственного базового класса здесь или класс ArticlePage также называют как класс BASE, потому что класс NewsPage проистекает из него?
В оболочке ореха есть классы, которые происходят из других классов, также называемых классами BASE (для класса, который наследует его)?
Вопрос 2
Если у меня есть вышеуказанные классы, определенные при работе в строго типизированного файла вида (с бритвой), если я пишу следующий код
@foreach (var article in Model.Articles)
{
if (article is StandardPage)
{
var articlePage = article as StandardPage;
Если объект внутри статья var имеет тип StandardPage, ArticlePage или страницу новостей, тогда varPage var будет заполнен без каких-либо проблем, поскольку StandardPage - это класс BASE, который ArticlePage & NewsPage наследует, однако, если я изменю код на следующие
@foreach (var article in Model.Articles)
{
if (article is StandardPage)
{
var articlePage = article as ArticlePage;
Когда объект внутри статьи вар имеет тип StandardPage я получит «ссылка на объект не указывает на экземпляр объекта» при попытке заполнить articlePage вар, потому что StandardPage не наследует от ArticlePage (это наоборот), и поэтому я не могу использовать что-то типа StandardPage и ArticlePage.
Пальцы скрещены им почти там с пониманием этого, но если им путь от марки может кто-то пожалуйста, мне точку в правильном направлении
Заранее спасибо
Я думаю, что если вы зацикливаете свои статьи и бросаете их в свое мнение, то вы, вероятно, делаете что-то неправильно. – Paddy
Да, но давайте скажем, что я поддерживаю приложение, и вот как оно было написано, мое понимание относительно наследования из правильного представления? Все, что я задаю этим вопросам, - это понять, как работает наследование. Я понимаю, что MVC предназначен для того, чтобы предоставить возможность отделить логику от внутреннего зрения и т. Д. Спасибо за ваш ответ. – Paul
@HenkHolterman - Я думаю, что у вас может быть что-то неправильное - учитывая код, NewsPage является ArticlePage. – Paddy