2016-05-12 6 views
0

meine KlasseResharper, der nur Lesefeld vorschlägt, warum? Dies ist

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 ist, dass _mail was darauf hindeutet, ist nur lesbar gemacht werden, würde aber nicht das machen, so dass in meiner „SetEmail“ Methode, die diese Eigenschaften nicht festgelegt werden? Jemand kümmert sich darum zu erklären, wenn ich hier etwas falsch verstehe.

Antwort

4

Read-only bedeutet, dass Sie nicht Feld zuweisen können selbst:

_mail = new MailMessage(); // cannot do that outside constructor 

Aber das bedeutet nicht, Eigenschaften von Objekt selbst nicht verändert werden:

_mail.To = new EmailAddress("test"); // perfectly fine with readonly field. 

So ReSharper Vorschlag richtig ist - Sie nur Ihr Feld zuweisen im Konstruktor so gemacht werden kann readonly.

+0

Ein Feld, das schreibgeschützt ist, kann also seine Eigenschaften überall ändern? Ich habe immer gedacht, dass das nicht der Fall war und konnte nur seine Eigenschaften innerhalb des Konstruktors geändert haben. – grimsan55

+1

Nun, was Sie dachten, ist nicht wahr dann :) – Evk

+0

@ Grimsan55 und Sie sollten solche Objekt unveränderlich selbst gestalten - Sprache hat keine Unterstützung aus der Box, um Objekte magisch unveränderlich zu machen. – Evk

Verwandte Themen