繁体   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