- PR -

System.Web.UI.MasterPageクラスのPageプロパティについて

1
投稿者投稿内容
よろしくお願いします。
常連さん
会議室デビュー日: 2006/01/17
投稿数: 21
投稿日時: 2009-01-14 00:45
[前提]
System.Web.UI.Controlクラスに定義されている「Page」プロパティは
System.Web.UI.Pageクラスだと思います。

[試したこと]
マスターページを使用してaspxを作成しています。
 マスターページ→OrgMasterPage : System.Web.UI.MasterPage
 コンテンツページ→OrgPage : System.Web.UI.Page
 ※OrgMasterPageクラスにOrgPageを突っ込んでいます
<結果1>
OrgMasterPageクラスにて
 this.Equals(this.page) → true
<結果2>
OrgPageクラスにて
 this.Equals(this.page) → true
となります。

[不思議におもったこと]
[前提]にもあるとおり、「Page」プロパティは、System.Web.UI.Pageクラス。
OrgPageクラスは、System.Web.UI.Pageクラスを継承している為、<結果2>となるのはわかります。
しかし、OrgMasterPageは、System.Web.UI.MasterPageクラスを継承しています。
なのに、<結果1>となります。
System.Web.UI.MasterPageクラスは、System.Web.UI.Pageクラスを継承していないのにどうして
「Page」プロパティ(System.Web.UI.Pageクラスインスタンス)に設定できてしまうのでしょうか?

※*.aspxと*.csから自動生成されるコードがコンパイルされてDLLができることは
 知っているのですが、その自動生成されるコードに記述されているクラスも、
 System.Web.UI.Pageクラスとの継承関係はありませんでした…。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2009-01-14 00:52
どのように検証しましたか?
マスターページの Page_Load メソッドで this.Equals(this.Page) を実行してみましたが false でした。
_________________
C#と諸々
よろしくお願いします。
常連さん
会議室デビュー日: 2006/01/17
投稿数: 21
投稿日時: 2009-01-14 01:56
大変失礼致しました。完全なる間違いです。
ご指摘の通り、falseとなっておりました。
OrgMasterPage.Pageプロパティには、OrgPageクラスインスタンス※1が設定されていました。
大変申し訳ありませんでした。

※1…正確には、自動生成されるコードに定義されているOrgPageクラスを継承した
   クラスインスタンスです。
1

スキルアップ/キャリアアップ(JOB@IT)