我想了解MVC應用程序內的繼承,我有幾件事情,如果有人可以請幫忙,我想澄清一下。ASP.NET MVC中的繼承和BASE類
問題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或新聞頁面,那麼文章頁面var將被填充而沒有任何問題,因爲StandardPage是BASE類,其中NewsPage同時也是繼承,但是如果我將代碼更改爲以下代碼
@foreach (var article in Model.Articles)
{
if (article is StandardPage)
{
var articlePage = article as ArticlePage;
當文章VAR裏面的對象類型StandardPage試圖填充articlePage變種,因爲StandardPage不從ArticlePage繼承(到時我會收到「對象引用不設置到對象的實例」的這是相反的方式),因此我無法將某種類型的StandardPage轉換爲ArticlePage。
手指IM越過近那裏瞭解這一點,但如果沒譜IM方式可能有人請點我朝着正確的方向在前進
感謝
我認爲如果你正在循環你的文章並將它們投射到你的視圖中,那麼你可能做錯了什麼。 – Paddy
是的,但讓我說我支持一個應用程序,這是它如何被寫入,是我對視圖內繼承的理解是正確的?我提出這些問題的關鍵是瞭解繼承是如何工作的。我明白,MVC是爲了提供一種方法來分隔內部視圖等邏輯。感謝您的迴應 – Paul
@HenkHolterman - 我想你可能有錯誤 - 鑑於代碼,NewsPage是一篇文章。 – Paddy