私はこの質問に対する良い答えを見つけようとしていますが、見つけられないようです。次のように、ベース ページから派生した ASP.NET ページがあります。
public partial class MainPage : MyBasePage
{
protected void Page_Load(object sender, EventArgs e)
{
var loginTime = GetLoginTime(); // This works fine
}
}
そしてベースページ:
public partial class MyBasePage: Page
{
}
protected DateTime GetLoginTime()
{
// Do stuff
return loginTime;
}
今、私は自分のメソッドを呼び出す必要があるそのページにユーザーコントロールを持っています...次のように:
public partial class TimeClock : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
var loginTime = GetLoginTime(); // This does not work!
}
}
ご覧のとおり、明らかな理由により、基本メソッドを呼び出すことができません。私の質問は、ユーザー コントロールからこのメソッドを呼び出すにはどうすればよいですか? 私が見つけた回避策の1つは次のようなものです:
var page = Parent as MyBasePage;
page.GetLoginTime(); // This works IF I make GetLoginTime() a public method
関数を保護する代わりに公開すると、これは機能します。これを行うことは、このソリューションに取り組むための非常にOOPな方法のようには思えないので、誰かが私により良い解決策を提供できるなら、私はそれを感謝します!