Dlaczego nie nazywać metod nadpisywalnych w konstruktorach?
Jest to zbyt uproszczony przykład, ale mam pewien rzeczywisty kod, który koncepcyjnie robi to samo (próba walidacji wartości „ustaw” metod dostępu do klas pochodnych), a analizator daje mi „Nie wywołuj metod nadpisywalnych w konstruktorach”. Próbuję dowiedzieć się, czy powinienem zmienić kod, czy zignorować ostrzeżenie. Nie mogę wymyślić żadnego powodu, dla którego powinienem słuchać ostrzeżenia.
public abstract class SimpleUrl
{
protected string _url;
public abstract string Url { get; set; }
public SimpleUrl()
{ }
public SimpleUrl(string Url)
{
this.Url = Url;
}
}
public class HttpUrl : SimpleUrl
{
public HttpUrl()
{ }
public HttpUrl(string Url)
{
this.Url = Url;
}
public override string Url
{
get
{
return this._url;
}
set
{
if (value.StartsWith("http://"))
this._url = value;
else
throw new ArgumentException();
}
}
}