Wie kann ich das Erben von Klassen erzwingen, um eine statische Methode in C # zu implementieren?

Alles was ich tun möchte istStelle sicher das Kind Klassen der KlasseArtikel implementieren astatisch Methode und ich möchte, dass dies zur Kompilierungszeit überprüft wird, um Laufzeitfehler zu vermeiden.

abstrakte Klassen mit statischen Methoden scheinen nicht zu funktionieren:

FEHLER: Ein statisches Element kann nicht als überschrieben, virtuell oder abstrakt markiert werden

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();
    }
}

und Schnittstellen scheinen auch nicht zu funktionieren:

FEHLER: Kunde implementiert kein Schnittstellenelement 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();
}

Gibt es eine Problemumgehung dafür, dass der Compiler überprüft, ob das Erben von Klassen eine statische Methode mit einer bestimmten Signatur implementiert oder nicht?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage