2017-05-04 109 views
0

次のStyleCop違反に直面しています。これをどうすれば解決できますか?SA1401フィールドはプライベートアクセスで宣言する必要があります。プロパティを使用してフィールドを公開する

警告SA1401:CSharp.Maintainability:フィールドはプライベートアクセスで宣言する必要があります。プロパティを使用してフィールドを公開します。 MonitoringGitLabProjectStatus

私のコードは私がStyleCop違反をfaceingコメント行をマークし

public class EmailConfig 
    { 

     public EmailConfig() 
     { 
      this.AmazonClient = new AmazonSimpleEmailServiceClient(this.amazonUserName, this.amazonPassword); 
     } 
     protected MailMessage mailMessage = new MailMessage(); //Fields must be declared with private access. Use properties to expose fields 
     protected RawMessage rawMessage = new RawMessage(); //Fields must be declared with private access. Use properties to expose fields 
     protected SendRawEmailRequest request = new SendRawEmailRequest(); //Fields must be declared with private access. Use properties to expose fields 
     protected List<string> mailNotifications = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
     protected List<string> additionalNotifications = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
     protected List<string> additionalNotificationsinBCC = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
     private string amazonUserName = "user name"; 
     private string amazonPassword = "Password"; 
     public AmazonSimpleEmailServiceClient AmazonClient { get; protected set; } 
    } 
    public class EmailSenderThread : EmailConfig 
    { 
     private Thread msgThread; 
     public EmailSenderThread(List<string> emailAddresses, List<string> ccemailaddress, List<string> bccemailaddress, string from, string subject, string body, string attachmentFileName) 
      : base() 
     { 
      try 
      { 
       this.msgThread = new Thread(new ThreadStart(this.MailSender)); 
       mailMessage.From = new MailAddress(string.IsNullOrEmpty(from) ? "[email protected]" : from); 
       if (emailAddresses != null) 
       { 
        var tomails = emailAddresses; 
        foreach (string tomail in tomails) 
        { 
         if (!string.IsNullOrEmpty(tomail)) 
         { 
          mailMessage.To.Add(new MailAddress(tomail)); 
          mailNotifications.Add(tomail); 
         } 
        }        
       } 

       if (ccemailaddress != null) 
       { 
        var ccemails = ccemailaddress; 
        foreach (string ccmail in ccemails) 
        { 
         if (!string.IsNullOrEmpty(ccmail)) 
         { 
          mailMessage.CC.Add(new MailAddress(ccmail)); 
          additionalNotifications.Add(ccmail); 
         } 
        }        
       } 

       if (bccemailaddress != null) 
       { 
        var bccemails = bccemailaddress; 
        foreach (string bccmail in bccemails) 
        { 
         if (!string.IsNullOrEmpty(bccmail)) 
         { 
          mailMessage.Bcc.Add(new MailAddress(bccmail)); 
          additionalNotificationsinBCC.Add(bccmail); 
         } 
        }       
       } 

       mailMessage.Subject = subject; 
       AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, Encoding.UTF8, "text/html"); 
       if (body != null) 
       { 
        mailMessage.AlternateViews.Add(htmlView); 
       } 

       if (!string.IsNullOrEmpty(attachmentFileName)) 
       { 
        var attachment = new Attachment(attachmentFileName); 
        mailMessage.Attachments.Add(attachment); 
       } 

       MemoryStream memoryStream = ConvertMailMessage.ConvertMailMessageToMemoryStream(mailMessage); 
       rawMessage.WithData(memoryStream); 
       request.WithRawMessage(this.rawMessage); 
       request.WithDestinations(this.mailNotifications); 
       request.WithDestinations(this.additionalNotifications); 
       request.WithDestinations(this.additionalNotificationsinBCC); 
       request.WithSource(from); 
       this.msgThread.Start(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Exception in mail sending: {0}", ex); 
      } 
     } 

です。 public class EmailSenderThread:EmailConfigでPrivate feildにアクセスする方法がわかりません。私が保護されているのではなくPrivateを変更した場合、私は例外がありますpublic class EmailSenderThread:EmailConfig。私はEmailConfigのオブジェクトを作成してエラーを修正しようとしました。しかし、使用されていません。

答えて

0

C#プロパティを使用する必要があります。例えば

public class EmailConfig 
{ 
    public EmailConfig() 
    { 
     this.AmazonClient = new AmazonSimpleEmailServiceClient(this.amazonUserName, this.amazonPassword); 
    } 
    protected MailMessage MailMessage { get; set; } = new MailMessage(); //Fields must be declared with private access. Use properties to expose fields 
    protected RawMessage RawMessage { get; set; } = new RawMessage(); //Fields must be declared with private access. Use properties to expose fields 
    protected SendRawEmailRequest Request { get; set; } = new SendRawEmailRequest(); //Fields must be declared with private access. Use properties to expose fields 
    protected List<string> MailNotifications { get; set; } = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
    protected List<string> AdditionalNotifications { get; set; } = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
    protected List<string> AdditionalNotificationsinBCC { get; set; } = new List<string>(); //Fields must be declared with private access. Use properties to expose fields 
    private string amazonUserName = "user name"; 
    private string amazonPassword = "Password"; 
    public AmazonSimpleEmailServiceClient AmazonClient { get; protected set; } 
} 
+1

グレート。正確に私が必要なもの! –

関連する問題