Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重写抽象类的抽象成员_C#_Inheritance_Overriding_Abstract Class_Abstract Data Type - Fatal编程技术网

C# 重写抽象类的抽象成员

C# 重写抽象类的抽象成员,c#,inheritance,overriding,abstract-class,abstract-data-type,C#,Inheritance,Overriding,Abstract Class,Abstract Data Type,我有一个基本抽象类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 c

我有一个基本抽象类
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
类中删除索引器

谢谢你的帮助

如果要强制执行,请不要在
BaseStudent
上实现它。由于
BaseStudent
abstract
,因此它不需要实现
BasePerson
中的所有
abstract
成员

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
,因此它必须实现它继承的基类链尚未实现的任何成员。

如果要在
BaseStudion
继承时从
BaseStudion
中删除索引器,我会说您的类层次结构有问题从
BasePerson
。为什么要这样做?如果要强制执行,请不要在
BaseStudent
上实现它。由于
BaseStudent
abstract
,它不需要实现
BasePerson
@jefferson中的所有
abstract
成员,我为我的英语感到抱歉。也许我解释不好。我不会移除索引器。我在棒球场需要它,我不知道我能做到这一点。谢谢!我正要写同样的东西,+1