簡體   English   中英

為什么我不能在沒有強制轉換的情況下訪問基類的成員?

[英]Why can I not access members of the base class without casting?

假設我有一個System.Web.IHttpHandler其基類是ASP.login_aspx其基類是MyCMS.Admin.Login其基類是......等等...一直回到System.Web.UI.Pageobject

為什么我必須MyCMS.Admin.Login IHttpHandler轉換為MyCMS.Admin.Login才能訪問該類型及以下的成員?

例:

IHttpHandler result = base.GetHandler(context, requestType, virtualPath, path);
bool isVisible = result.Visible;//Does not work
bool isVisible = ((MyCMS.Admin.Login)(result)).Visible;//Works
//Noting that Visible is a member of System.Web.UI.Page

為了清楚起見,我不期待那個結果。可見的應該工作,我只是想知道它為什么沒有。

Visible不是IHttpHandler的成員,所以你不應該期望能夠在這樣的變量上調用它。 我相信它是Page的成員,通過Control方式。

當你施放一個變量以基本類型的一個/該對象的類的接口,可以只調用成員是在可變 (或基類類型/接口)的類型。

IHttpHandler接口只是一個接口。 它不了解Visible成員,因為任何類都可以實現此接口。 你最終做的是轉換為繼承Visible成員的類的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM