如何从c#中的子类调用父类的方法?

时间:2011-09-28 00:48:56

标签: c# asp.net

我有一个母版页,其中包含一个方法,我从内容页面代码后面使用了很多。在那些代码背后,我有一个方法可以复制很多,所以我想我会把它放在我可以继承的东西中。不幸的是,我现在无法从基类中调用我的母版页代码中的方法。我想我应该知道如何,今天我可能很傻,但我无法理解。

这是一些代码!请忽略任何啸叫错误,我只是在脑海中输入:)

母版页代码隐藏

public partial class Site : MasterPage
{
    public void MyMethod()
    {
        // Do Something...
    }
}

内容(儿童)页面

声明

<%@ MasterType VirtualPath="~/Site.Master" %>

代码隐藏

作品

public class Test : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Master.MyMethod();
    }
}

不起作用

public class Test : TestClass
{
    protected void Page_Load(object sender, EventArgs e)
    {
        OtherMethod();
    }
}

public class TestClass : Page
{
    public void OtherMethod()
    {
        this.Master.MyMethod();
    }
}

现在,看着它,我直观地知道“this.Master”无法正常工作,但我没有任何灯泡可以回答。如何获取对母版页方法的引用?

谢谢, 理查德

3 个答案:

答案 0 :(得分:3)

您必须首先转换为MasterPage类的类型(在本例中为Site),然后您可以调用在类后面的代码中定义的公共方法...

public class TestClass : Page
{
    public void OtherMethod()
    {
        ((Site) this.Master).MyMethod();
    }
}

答案 1 :(得分:1)

你应该将this.Master投射到网站:

((Site)this.Master).MyMethod();

答案 2 :(得分:0)

您必须将this.Master强制转换为Site类型,以便访问在Site:MasterPage上定义的方法。

public class TestClass : Page
{
    public void OtherMethod()
    {
        ((Site)this.Master).MyMethod();
    }
}