Ich habe durch die SO Artikel folgen lesenAbgeleitete Klasse aufrufen statische Methode der Basisklasse in einem eigenen statischen Methode
- C#: How do I call a static method of a base class from a static method of a derived class?
- Can I have a base class where each derived class has its own copy of a static property?
- What's the correct alternative to static method inheritance?
Alle scheinen ganz in der Nähe meine Frage und habe gute Antworten, aber sie scheinen meine Frage nicht zu beantworten, außer zu sagen, dass ich die Methode nicht-statisch machen muss.
ein Beispiel:
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 würde Eigenschaften 1,2,3,4 während derivedB Eigenschaften 1,2,10,11 haben würde. Die Liste der Eigenschaften scheint ein klassenspezifischer Wert zu sein und kann an keiner Stelle geändert werden. Ich würde denken, dass es dann statisch wäre.
Ist mein Entwurf falsch in dem Sinne, dass ich versuche, statische Methoden zu verwenden, wenn sie nicht sein sollten?
Das obige Beispiel lässt mich denken, dass die Vererbung von statischen Methoden benötigt wird, aber es scheint, dass der Versuch, dies zu tun, ein Konstruktionsfehler ist. Kann mir jemand auf diese Weise helfen zu verstehen, was mit der Codierung oder Strukturierung von Klassen falsch ist?
Ist das eigentliche Code? Sie können keine virtuellen statischen Mitglieder haben. –
Nein, es ist nur ein Beispielcode einer Operation, von der ich dachte, dass sie möglich sein sollte. –