Todo lo que quiero hacer es asegurarse de que las clases de los niños de la clase de artículo implementar un método estáticoy yo quiero que esto se puede comprobar en tiempo de compilación para evitar los errores de ejecución.¿Cómo puedo forzar que las clases heredadas implementen un método estático en C#?
no parecenclases abstractas con métodos estáticos para trabajar:
ERROR: A static member cannot be marked as override, virtual, or abstract
public abstract class Item
{
public static abstract Item GetHistoricalItem(int id, DateTime pastDateTime);
}
public class Customer : Item
{
public static override Customer GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Customer();
}
}
public class Address : Item
{
public static override Address GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Address();
}
}
y no parecen interfaces para trabajar ya sea:
ERROR: Customer does not implement interface member GetHistoricalItem()
public class Customer : Item, HistoricalItem
{
public static Customer GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Customer();
}
}
public class Address : Item, HistoricalItem
{
public static Address GetHistoricalItem(int id, DateTime pastDateTime)
{
return new Address();
}
}
interface HistoricalItem
{
Item GetHistoricalItem();
}
¿Hay algún wo ¿Para qué sirve verificar al compilador si las clases heredadas implementan un método estático con una determinada firma o no?
Tengo un elemento de clase que varios objetos heredan, p. Cliente, dirección, etc. Y si una clase es de tipo Item, entonces quiero poder llamar a un método de fábrica llamado GetHistoricalItem(). Así que quiero poder decir Address address = Address.GetHistoricalItem (...). Y quiero saber en tiempo de compilación que todas mis clases que heredan Item hacen esto. Simplemente debería funcionar de la misma manera que lo hace, por ejemplo, los métodos. –
@EdwardTanguay Esto es de hace mucho tiempo, pero es mejor crear algún tipo de clase de historial (instancia) que contenga métodos normales para recuperar direcciones. Registrarse sería un buen nombre, por ejemplo. –