Это мой классResharper, предлагающий поле только для чтения, почему?
public class EmailBuilder
{
public string Sender { get; set; }
public string Receiver { get; set; }
public string Subject { get; set; }
public string Body { get; set; }
public int SmtpServerPort { get; set; }
public string SmtpServerAddress { get; set; }
private MailMessage _mail;
public EmailBuilder()
{
this._mail = new MailMessage();
this.SmtpServerAddress = CmsConstants.smtpServerAddress;
this.SmtpServerPort = CmsConstants.smtpServerPort;
}
public void SetEmail(string receiver, string subject, string body)
{
this._mail.To.Add(receiver);
this._mail.From = new MailAddress("[email protected]");
this._mail.Subject = subject;
this._mail.Body = body;
this._mail.Bcc.Add("[email protected]");
}
}
ReSharper это позволяет предположить, что _mail должно быть сделано только для чтения, но не будет ли это сделать так, чтобы в моем методе «SetEmail», которые не будут установлены эти свойства? Кто-то хочет объяснить, если я что-то не понимаю.
Итак, поле, которое только для чтения, может изменять его свойства везде? Я всегда думал, что это не так, и только его свойства изменились внутри конструктора. – grimsan55
Ну, что вы считали неверным тогда :) – Evk
@ grimsan55, и вы должны спроектировать такой объект неизменным - язык не имеет поддержки из коробки, чтобы сделать объекты магически неизменными. – Evk