He leído a través de los artículos seguir paraclase derivada Llamando al método estático de la clase base en su propio método estático
- 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?
Todos parecen muy cerca mi pregunta y tengo buenas respuestas, pero no parecen responder a mi pregunta más que decir que necesito que el método no sea estático.
un ejemplo:
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 tendría propiedades 1,2,3,4 mientras derivedB tendría propiedades 1,2,10,11. La lista de propiedades parece ser un valor específico de clase y no se puede cambiar en ningún momento. Yo pensaría que entonces sería estático.
¿Es incorrecto mi diseño en el sentido de que estoy tratando de usar métodos estáticos cuando no deberían?
El ejemplo anterior me hace pensar que la herencia de métodos estáticos sería necesaria, sin embargo, parece que tratar de hacer esto es un defecto de diseño. ¿Alguien puede ayudarme a entender qué está mal con las clases de codificación o estructuración de esta manera?
Es este código real? No puede tener miembros estáticos virtuales. –
No, es solo el código de ejemplo de una operación que estaba pensando que podría ser posible. –