首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从子类c#调用父方法

从子类c#调用父方法
EN

Stack Overflow用户
提问于 2012-12-06 20:25:31
回答 3查看 140.8K关注 0票数 36

这是一个与我之前看到的答案略有不同的问题,或者我没有得到它。我有一个父类,它有一个名为MyMethod()的方法和一个变量public Int32 CurrentRow;

代码语言:javascript
复制
public void MyMethod()
{    
     this.UpdateProgressBar();    
}

在父目录中,我创建了一个新的ChildClass实例

代码语言:javascript
复制
Boolean loadData = true;
if (loadData) 
{    
     ChildClass childClass = new ChildClass();    
     childClass.LoadData(this.Datatable);    
}

在子类LoadData()方法中,我希望能够设置父类的CurrentRow变量并调用MyMethod()函数。

我该怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-07 00:42:26

找到了解决方案。

在父类中,我声明了ChildClass()的一个新实例,然后将该类中的事件处理程序绑定到父类中的本地方法

在子类中,我添加了一个公共事件处理程序:

代码语言:javascript
复制
public EventHandler UpdateProgress;

在父类中,我创建了这个子类的一个新实例,然后将本地父事件绑定到子类中的public eventhandler

代码语言:javascript
复制
ChildClass child = new ChildClass();
child.UpdateProgress += this.MyMethod;
child.LoadData(this.MyDataTable);

然后在子类的LoadData()中,我可以调用

代码语言:javascript
复制
private LoadData() {
    this.OnMyMethod();
}

其中,OnMyMethod是:

代码语言:javascript
复制
public void OnMyMethod()
{
     // has the event handler been assigned?
     if (this.UpdateProgress!= null)
     {
         // raise the event
         this.UpdateProgress(this, new EventArgs());
     }
}

这将在父类中运行事件

票数 10
EN

Stack Overflow用户

发布于 2012-12-06 20:28:21

若要访问父类的属性和方法,请使用base关键字。因此,在您的子类LoadData()方法中,您将这样做:

代码语言:javascript
复制
public class Child : Parent 
{
    public void LoadData() 
    {
        base.MyMethod(); // call method of parent class
        base.CurrentRow = 1; // set property of parent class
        // other stuff...
    }
}

请注意,您还必须将父MyMethod()的访问修饰符至少更改为protected,子类才能访问它。

票数 72
EN

Stack Overflow用户

发布于 2015-08-27 00:40:28

跟进suhendri对Rory的评论。下面是一个Action委托示例:

在子添加中:

代码语言:javascript
复制
public Action UpdateProgress;  // In place of event handler declaration
                               // declare an Action delegate
.
.
.
private LoadData() {
    this.UpdateProgress();    // call to Action delegate - MyMethod in
                              // parent
}

在父添加中:

代码语言:javascript
复制
// The 3 lines in the parent becomes:
ChildClass child = new ChildClass();
child.UpdateProgress = this.MyMethod;  // assigns MyMethod to child delegate
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13743609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档