Как получить доступ к членам экземпляра в статическом методе?

Я пытаюсь создать классы для инкапсуляции проверки и логики для таких объектов, как электронная почта, URL, номер телефона и так далее. с первой попытки я обнаружил, что повторяю один и тот же код во всех классах, специально статическихIsValid иConstructor , поэтому я решил создать базовый класс, чтобы в него помещались все те же коды. так что естьбазовый класс что другие классы наследуют его. егоАбстрактные как и яне хочу его использоватьнепосредственно .

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

проблема со статикойIsValid метод BaseClass. в текущем коде он выдает ошибки какRegexPattern а такжеRegexOption являются членами экземпляра. Я не хочу определять одно и то же значение дважды для экземпляров и статических методов. это работает, если я использую

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

но мне нужно иметь возможность переопределить эти значения в подклассах, так что это не применимо. и как я определилBaseClass какabstract Я не могу создать экземпляр внутри статического метода, чтобы иметь доступ к свойствам.

и как я хочу использовать статический метод так же, какEmail.IsValid("[email protected]"); Я не знаю, как передать экземпляр через него.

Итак, как я могу получить доступ кRegexOption а такжеRegexPattern в этом статическом методе?

Ответы на вопрос(2)

Ваш ответ на вопрос