2010-03-03 33 views
0

内部可见我无法弄清楚为什么Control.CreateChildControls在网页的代码隐藏类中可见。也就是说,Control.CreateChildControls定义为protected internal,这意味着该方法仅对位于与Control类相同的程序集内的派生类可见。那么怎么可能,因为据我所知,网页类没有被编译成与Control类(System.Web.dll)相同的程序集?由于Control.CreateChildControls被标记为受保护的内部,它不应该在

thanx

回答

2

不幸的是,'受保护的内部'的措词是误导性的。这意味着'受保护''内部'而不是'受保护''内部'。

在你的%program files%\ microsoft visual studio 9.0 \ vc#\ Specifications \ 1033中,你有C#参考手册,这是在1.6.2节。

因此派生类可以使用它。

+0

感谢你们的帮助 – AspOnMyNet 2010-03-03 23:26:44

1

Page类继承自Control,它们都在System.Web.UI命名空间中,并且都在System.Web程序集中。

2

我觉得这是非常无益的表征之间的差异“保护和内部”与“受保护或内部”。哪些是“受保护的内部”?

你可能会说“受保护的内部是保护内部的限制最少的组合,因此它的意思是‘保护内部’”。

你也说“因此,它意味着‘保护内部的’受保护的内部限制访问派生成员装配成员”。

Yuck。

更好的方式来想想是:

  • 成员的默认可访问是“私” - 最小的可能访问域
  • 修饰符扩大成员的访问域
  • 因此受保护的内部可扩展可访问性域两次,一次派生成员和一次派遣成员。

有关此看到更多的想法:

http://blogs.msdn.com/ericlippert/archive/2008/04/24/why-can-t-i-access-a-protected-member-from-a-derived-class-part-three.aspx

相关问题