我已阅读以下 SO 文章
所有人似乎都非常接近我的问题并且有很好的答案,但他们似乎没有回答我的问题,只是说我需要使该方法成为非静态的。
一个例子:
abstract public class baseClass
{
private static List<string> attributeNames = new List(new string {"property1","property2"});
// code for property definition and access
virtual public static bool ValidAttribtue(string attributeName)
{
if (attributeNames.Contains(attributeName))
return true;
else
return false;
}
}
class derivedA : baseClass
{
private static List<string> attributeNames = new List(new string {"property3","property4"});
// code for property definition and access
public static override bool ValidAttribute(string attributeName)
{
if (attributeNames.Contains(attributeName))
{
return true;
}
else
{
return base.ValidAttribute(attributeName);
}
}
}
class derivedB : baseClass
{
private static List<string> attributeNames = new List(new string {"property10","property11"});
// code for property definition and access
public static override bool ValidAttribute(string attributeName)
{
if (attributeNames.Contains(attributeName))
{
return true;
}
else
{
return base.ValidAttribute(attributeName);
}
}
}
derivedA 将具有属性 1,2,3,4,而 derivedB 将具有属性 1,2,10,11。属性列表似乎是特定于类的值,不能在任何时候更改。我认为它会是静态的。
我的设计是否错误,因为我在不应该使用静态方法时尝试使用它们?
上面的例子让我觉得需要继承静态方法,但似乎尝试这样做是一个设计缺陷。任何人都可以帮助我理解以这种方式编码或构造类有什么问题吗?