【发布时间】:2012-01-20 19:02:04
【问题描述】:
我想为所有参数类型的类创建一个抽象基类,以便在我的应用程序中继承。所有参数都将具有名称、ID 和必需的属性。
所有参数都将通过 SetProperties 方法从 XML 设置其属性(下面显示的 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);来自子类
标签: c# inheritance abstract-class