Jak uzyskać dostęp do członków instancji w metodzie statycznej?

Próbuję utworzyć klasy do hermetyzacji sprawdzania poprawności i logiki dla obiektów takich jak e-mail, adres URL, numer telefonu i tak dalej. w pierwszej próbie odkryłem, że powtarzam ten sam kod we wszystkich klasach, szczególnie statycznychIsValid iConstructor . więc postanowiłem utworzyć klasę bazową, aby umieścić w niej wszystkie te same kody. więc jestklasa bazowa że inne klasy go odziedziczą. jegoabstrakcyjny jak janie chcesz, żeby to było używanebezpośrednio .

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){}
}

problem dotyczy statycznościIsValid metoda BaseClass. w bieżącym kodzie zgłasza błędy jakoRegexPattern iRegexOption są członkami instancji. Nie chcę zdefiniować tej samej wartości dwa razy na przykład i metod statycznych. działa, gdy używam

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

ale muszę być w stanie zastąpić te wartości w podklasach, więc nie ma to zastosowania. i jak zdefiniowałemBaseClass tak jakabstract Nie mogę utworzyć instancji wewnątrz metody statycznej, aby uzyskać dostęp do właściwości.

i tak jak chcę używać metody statycznejEmail.IsValid("[email protected]"); , Nie wiem, jak przez to przekazać instancję.

więc, jak mogę mieć dostępRegexOption iRegexPattern w tej statycznej metodzie?

questionAnswers(2)

yourAnswerToTheQuestion