一种方法是在构造函数中将ParentClass
的实例传递给ChildClass
public ChildClass
{
private ParentClass parent;
public ChildClass(ParentClass parent)
{
this.parent = parent;
}
public void LoadData(DateTable dt)
{
parent.CurrentRow++;
parent.UpdateProgressBar();
}
}
在父类内构造ChildClass
时,确保将引用传递给this
:
if(loadData){
ChildClass childClass = new ChildClass(this);
childClass.LoadData(this.Datatable);
}
注意:这可能不是组织类的最佳方式,但它直接回答了你的问题。
编辑:在评论中,您提到有多个父类想使用ChildClass
。通过引入一个接口可以实现这一点,例如:
public interface IParentClass
{
void UpdateProgressBar();
int CurrentRow{get; set;}
}
现在,请确保在所有父类上实现该接口,并将子类更改为以下内容:
public ChildClass
{
private IParentClass parent;
public ChildClass(IParentClass parent)
{
this.parent = parent;
}
public void LoadData(DateTable dt)
{
parent.CurrentRow++;
parent.UpdateProgressBar();
}
}
现在任何实现
IParentClass
的东西都可以构造一个
ChildClass
的实例并将
this
传递给它的构造函数。
MyMethod
是私有的,你无法从ChildClass
调用它。 - Daniel Hilgarthprivate
更改为protected
,以允许该方法从子类中被访问。 - Rory McCrossan