C#基本多态性问题

1 c# polymorphism class-design

我不确定它真的是一个"多态"问题,但无论如何......所以我有一个抽象类和另外两个继承它的类.

来自基类的一些代码具有一个变量,该变量在扩展基类的类之间会有所不同.

最好的方法是什么?覆盖"获取"方法?稍微更改架构以调用从base classe到传递值的扩展类的函数...

这是一个例子(它不会编译,只是我如何做的一个小例子):

public abstract class BaseAbstract class {

  ... some code ....

  // Here "listName" would change depending on the extending class
  protected List<Items> getAllItems(String listName) {

    Web.getList(listName);

    ... some code ...

  }

  protected abstract List<Items> getAllItems();

}

public class NewClass : BaseAbstract {
 protected override void getAllItems() {
    return getAllItems("ListNameOfNewClass");
 }
}
Run Code Online (Sandbox Code Playgroud)

我就是这样做的,但是IMO的维护并不是很清楚和容易.

任何想法或评论欢迎!

cta*_*cke 7

我可能会选择这样的东西:

public abstract class Base
{
    protected abstract string ListName { get; }
    public List<Item> GetItems()
    {
        return Web.GetList(ListName);
    }
}

public class Child : Base
{
    protected override string ListName
    {
        get { return "MyListName"; }
    }
}
Run Code Online (Sandbox Code Playgroud)