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