Wie kann man in einer statischen Methode auf Instanzmitglieder zugreifen?

Ich versuche, Klassen zu erstellen, um Validierung und Logik für Objekte wie E-Mail, URL, Telefonnummer usw. zu kapseln. Beim ersten Versuch stellte ich fest, dass ich denselben Code in allen Klassen wiederhole, die speziell statisch sindIsValid und dasConstructor . Deshalb habe ich beschlossen, eine Basisklasse zu erstellen, in die alle gleichen Codes eingefügt werden. also gibt es eineBasisklasse dass andere Klassen es erben. es istabstrakt da ichnicht möchte, dass es benutzt wirddirekt .

public abstract class BaseClass
{
            protected string value;
            private bool isValid;

            public bool IsValid{get { return this.isValid;}}

    protected virtual string RegexPattern{get;}

    protected virtual RegexOptions RegexOption{get;}

    private BaseClase(){}

    protected BaseClass(string value)
    {
        this.isValid = Validator.IsValid(value , RegexPattern, RegexOption);
        this.value = this.isValid ? value : string.Empty;
    }

    public static bool Validate(string value)
    {
        return Validator.IsValid(value ,RegexPattern, RegexOption); // rror
    }

}

public class Email
{
    private override string RegexPattern
    {
        get
        {
            return ".*";
        }
    }

    private override RegexOptions RegexOption
    {
        get
        {
            return RegexOptions.SingleLine;
        }
    }

            public string Address{get {return this.value; }}

    public Email(string address) : base(address){}
}

das problem ist mit der statikIsValid Methode der BaseClass. im aktuellen Code wirft es Fehler alsRegexPattern undRegexOption sind Instanzmitglieder. Ich möchte zum Beispiel nicht denselben Wert zweimal definieren und statische Methoden. es funktioniert wenn ich benutze

const string RegexPattern= ".*";
const RegexOptions RegexOption =RegexOptions.SingleLine;

Ich muss jedoch in der Lage sein, diese Werte in Unterklassen zu überschreiben, damit dies nicht zutrifft. und wie ich das definiert habeBaseClass wieabstract Ich kann es nicht innerhalb der statischen Methode instanziieren, um Zugriff auf Eigenschaften zu haben.

und da möchte ich gerne statische methode verwendenEmail.IsValid("[email protected]"); Ich weiß nicht, wie ich eine Instanz durchlaufen soll.

Also, wie kann ich darauf zugreifen?RegexOption undRegexPattern in dieser statischen Methode?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage