Como ter acesso a membros de instâncias em um método estático?

Eu estou tentando criar classes para encapsular validação e lógica para objetos como e-mail, URL, número de telefone e assim por diante. na primeira tentativa eu ​​descobri que estou repetindo o mesmo código em todas as classesIsValid e aConstructor . então decidi criar uma classe base para colocar todos os mesmos códigos nela. então há umclasse base que outras classes herdam isso. Estáabstrato como eunão faça quer que seja usadodiretamente .

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

o problema é com a estáticaIsValid método de BaseClass. no código atual, ele gera erros comoRegexPattern eRegexOption são membros da instância. Eu não quero definir o mesmo valor duas vezes por exemplo e métodos estáticos. funciona se eu usar

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

mas eu preciso ser capaz de substituir esses valores em subclasses, então isso não é aplicável. e como eu defini oBaseClass Comoabstract Eu não consigo instanciá-lo dentro do método estático para ter acesso às propriedades.

e como eu quero usar o método estático comoEmail.IsValid("[email protected]"); , Eu não sei como passar um exemplo através dele.

então, como posso ter acesso aRegexOption eRegexPattern neste método estático?

questionAnswers(2)

yourAnswerToTheQuestion