¿Cómo tener acceso a los miembros de instancia en un método estático?

Estoy tratando de crear clases para encapsular la validación y la lógica de objetos como correo electrónico, URL, número de teléfono, etc. en el primer intento descubrí que estoy repitiendo el mismo código en todas las clases especialmente estáticasIsValid y elConstructor . así que decidí crear una clase base para poner todos los mismos códigos en ella. así que hay unclase base Que otras clases lo heredan. susresumen como yono hacer quiero que sea usadodirectamente .

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

El problema es con la estática.IsValid Método de la clase base. en el código actual arroja errores comoRegexPattern yRegexOption son miembros de la instancia. No quiero definir el mismo valor dos veces por ejemplo y métodos estáticos. funciona si uso

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

pero necesito poder anular estos valores en subclases, por lo que esto no es aplicable. y como he definido elBaseClass comoabstract No puedo crear una instancia dentro del método estático para tener acceso a las propiedades.

Y como quiero usar el método estático al igual queEmail.IsValid("[email protected]"); , No sé cómo pasar una instancia a través de él.

Entonces, ¿cómo puedo tener acceso aRegexOption yRegexPattern ¿En este método estático?

Respuestas a la pregunta(2)

Su respuesta a la pregunta