为什么我不能在没有强制转换的情况下访问基类的成员?

时间:2012-02-08 02:45:11

标签: c# asp.net casting

假设我有一个System.Web.IHttpHandler,其基类为ASP.login_aspx,其基类为MyCMS.Admin.Login,其基类为...等...一直回到{{1}当然,System.Web.UI.Page

为什么在访问该类型及以下成员之前,我必须将IHttpHandler强制转换为object

示例:

MyCMS.Admin.Login

为了清楚起见,我不期待那个结果。可见应该工作,我只是想知道它为什么没有。

2 个答案:

答案 0 :(得分:3)

Visible不是IHttpHandler的成员,因此您不应期望能够在此类变量上调用它。我相信,它是Page的成员,Control

当您将变量强制转换为对象类的基类型/接口之一时,您只能调用变量类型的成员(或基类/ 类型的接口。)

答案 1 :(得分:1)

IHttpHandler界面就是那个界面。它不知道Visible成员,因为任何类都可以实现此接口。你最终做的是投射到一个继承Visible成员的类的对象。