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?