所以我有一个基类,它有一个属性ItemList
:
public class BaseClass {
private List<Item> itemList;
public List<Item> ItemList {
set {
itemList = value;
LoadItems();
}
}
public void LoadItems() { ... }
}
现在我有一个派生类,我希望在其中更改函数LoadItems()
的行为。所以我这样做了:
public class DerivedClass {
public new void LoadItems() { ... }
}
但是当我设置属性ItemList
时,只调用基础LoadItems()
。无论如何我可以拨打新的LoadItems()
吗?
答案 0 :(得分:5)
设置您的媒体资源virtual
并使用override
标记派生类的实现,而不是new
:Knowing When to Use Override and New Keywords (C# Programming Guide)
public virtual List<Item> ItemList {
set {
itemList = value;
LoadItems();
}
}
public override List<Item> ItemList {
set {
// do something
// you can also call base.ItemList
// to get base class property implementation
}
}
答案 1 :(得分:3)
使用此代码:
public class BaseClass {
// ....
public virtual void LoadItems() { ... }
}
public class DerivedClass : BaseClass {
public override void LoadItems() { ... }
}
答案 2 :(得分:2)
使LoadItems()
虚拟并在派生类中覆盖它:
public class Base
{
public virtual void LoadItems() { ... }
}
public class Derived : Base
{
public override void LoadItems() { ... }
}