SA1401 字段必须声明为私有访问。使用属性公开字段
SA1401 Fields must be declared with private access. Use properties to expose fields
我面临以下 StyleCop 违规行为。我该如何解决这个问题?
Warning SA1401 : CSharp.Maintainability : Fields must be declared with private access. Use properties to expose fields. MonitoringGitLabProjectStatus
我的密码是
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) ? "gitlabteam@syncfusion.com" : 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);
}
}
我标记了我面临 StyleCop 违规行为的评论行。我不知道如何访问 public class EmailSenderThread 中的私有字段:EmailConfig。如果我更改 Private 而不是 protected 意味着我在 public class EmailSenderThread : EmailConfig 中得到异常。我尝试通过为 EmailConfig 创建对象来修复错误。但是没用过。
您应该使用 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; }
}
我面临以下 StyleCop 违规行为。我该如何解决这个问题?
Warning SA1401 : CSharp.Maintainability : Fields must be declared with private access. Use properties to expose fields. MonitoringGitLabProjectStatus
我的密码是
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) ? "gitlabteam@syncfusion.com" : 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);
}
}
我标记了我面临 StyleCop 违规行为的评论行。我不知道如何访问 public class EmailSenderThread 中的私有字段:EmailConfig。如果我更改 Private 而不是 protected 意味着我在 public class EmailSenderThread : EmailConfig 中得到异常。我尝试通过为 EmailConfig 创建对象来修复错误。但是没用过。
您应该使用 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; }
}