Как получить доступ к членам экземпляра в статическом методе?
Я пытаюсь создать классы для инкапсуляции проверки и логики для таких объектов, как электронная почта, 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
в этом статическом методе?