1

我有一个基础抽象类BasePerson。我有另一个抽象类BaseStudent,它继承自BasePerson. 这是示例。

public abstract class BasePerson
{
    public string Name{get;set;}
    public string LastName{get;set;}
    public abstract object this[string propertyName]{get;set;}
}

public abstract class BaseStudent : BasePerson
{
    public string Test{get;set;}
    //this class inherits from BasePerson and it forces to override the indexer.
    //I can do this:
    public override object this[string propertyName]
    {
        get{return null;} 
        set
        {
            //do stuff;
        }
    }
}

public class Student : StudentBase
{
    //other properties
}

现在我无法强制Student类覆盖索引器。我应该怎么做才能强制学生覆盖索引器?我无法从BasePerson课堂上删除索引器。

帮助表示赞赏!

4

1 回答 1

3

如果你想强制它,不要在BaseStudent. 既然BaseStudentabstract,它不需要执行所有的abstract成员 from BasePerson

public abstract class BasePerson
{
    public string Name{get;set;}
    public string LastName{get;set;}
    public abstract object this[string propertyName]{get;set;}
}

public abstract class BaseStudent : BasePerson
{
    public string Test{get;set;}
}

public class Student : BaseStudent
{
    //must implement it here since Student isn't abstract!
}

abstract类不需要定义其继承类的所有abstract成员,因此您可以随意将责任交给任何具体的类来实现它。Student没有被定义,abstract所以它必须实现它继承的基类链尚未实现的任何成员。

于 2013-05-17T13:45:12.753 回答