Я хочу создать абстрактный базовый класс для всех классов типа параметров для наследования в моем приложении. Все параметры будут иметь имя, идентификатор и требуемые свойства.Абстрактные классы и методы в C#
Все параметры будут иметь свои свойства, установленные из XML с помощью метода SetProperties (приведенный ниже класс XmlParser показан только для демонстрации).
Поскольку все параметры будут иметь одинаковые 3 свойства, я хотел, чтобы базовый класс устанавливал эти свойства, но унаследованный класс расширяет метод SetProperties, чтобы установить дополнительные свойства, которые он содержит.
Я думал о чем-то наподобие переопределения событий на Control
.
Вот пример того, о чем я думал, хотя он не работает.
abstract class ParameterBase
{
protected string ParameterName;
protected bool IsRequired;
protected int ParameterId;
public abstract void SetProperties(string xml)
{
this.ParameterName = XmlParser.GetParameterName(xml);
this.IsRequired = XmlParser.GetIsRequired(xml);
this.ParameterId = XmlParser.GetParameterId(xml);
}
}
abstract class Parameter1 : ParameterBase
{
private string _value;
public string ParameterName
{
get { return base.ParameterName; }
}
public bool IsRequired
{
get { return base.IsRequired; }
}
public int ParameterId
{
get { return base.ParameterId; }
}
public string Value
{
get { return _value; }
}
public Parameter1()
{
}
public override void SetProperties(string xml)
{
base.SetProperties(xml);
_value = XmlParser.GetValue(xml);
}
}
Уточнитните «не работает.» Вы получаете исключение? Результаты, которых вы не ожидаете? –
Извините - он даже не будет скомпилирован - вы не можете назвать абстрактного базового члена: base.SetProperties (xml); из дочернего класса – ChandlerPelhams