C# kann Nicht beheben symbol
Ich weiß nicht, warum ich immer diese Fehlermeldung. Scheint elementar. Trotzdem habe ich eine singleton-Klasse namens EmailSender. Der code ist kurz und einfach. Das Problem ist, dass ich nicht verwenden können sender in der MainWindow-Klasse. Alles, was ich versuchen, diese als Absender.Send() wird behandelt, als ob ich getan habe, asdafsafas.Senden(). Es behandelt, als ob es eine zufällige Zeichenfolge von Zeichen. Weiß nicht, warum dies geschieht.
using System;
using System.Net.Mail;
using System.Windows.Forms;
namespace SendMail
{
public partial class MainWindow : Form
{
#region Private variables
private MailMessage msg = new MailMessage();
private EmailSender sender = EmailSender.GetInstance();
#endregion
public MainWindow()
{
InitializeComponent();
}
private MailMessage PrepareMailMessage()
{
return msg;
}
private void btnSend_Click(object sender, EventArgs e)
{
}
}
}
Hier ist die GetInstance-Methode:
public static EmailSender GetInstance()
{
return _instance ?? (_instance = new EmailSender());
}
Was ist die genaue Fehlermeldung?
Cannot resolve symbol Absender. Wenn ich kompilieren, ich bekomme die Meldung: Ungültiges token '(' in class, struct, or interface member declaration im Hauptfenster.cs
Okay, und die Zeile nicht produzieren diese Fehlermeldung?
Das singleton ist nicht threadsicher.
Gut, in einer einfachen Windows Forms-Programm, das ist wahrscheinlich nicht ein Problem.
Cannot resolve symbol Absender. Wenn ich kompilieren, ich bekomme die Meldung: Ungültiges token '(' in class, struct, or interface member declaration im Hauptfenster.cs
Okay, und die Zeile nicht produzieren diese Fehlermeldung?
Das singleton ist nicht threadsicher.
Gut, in einer einfachen Windows Forms-Programm, das ist wahrscheinlich nicht ein Problem.
InformationsquelleAutor s5s | 2011-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wegen der Art, wie Sie diese Methode definiert (sender ist ein parameter). Es ist das finden der Methode argument ersten, nicht deine Klasse-variable. Sie können sich diese:
Eine einfache Problemumgehung ist, zu Folgen, Konventionen und Präfix private Variablen, die mit _. Ex:
_sender
Oder, alternativ, in die Gewohnheit, nach dem StyleCop Richtlinien, die darauf hindeuten, immer voranstellen Mitglied Zugang über
this.***
.InformationsquelleAutor Reed Copsey
Weil
sender
ist keine E-mail-Objekt, sondern die Schaltfläche, die das Ereignis ausgelöst hat. Sie müssen dieSmtpClient
zum senden der E-Mail:Auch, die
MailMessage
Klasse implementiertIDisposable
, so müssen Sie einige code zu entsorgen die Nachricht sobald Sie fertig sind mit ihm.Erstellte ich einen wrapper, der alles enthält, was Sie benötigen, um emails zu versenden, einschließlich der Entsorgung:
Umsetzung:
InformationsquelleAutor James Johnson
Wenn Sie es tun, innerhalb des Rahmens Ihrer
btnSend_Click
Methode, die parameterobject sender
Vorrang vor der globalenEmailSender sender
.Sollten Sie entweder benennen Sie die Globale variable, z.B.:
EmailSender m_sender
oder genau angeben, welche sender Sie wollen:this.sender.Send()
InformationsquelleAutor rrhartjr
Ich Schätze, dass Sie den Absender anrufen.Senden Sie in der btnSend_Click Funktion.
In dieser Funktion wird ein param-auch als Absender (object sender). Jetzt können Sie code ist verwirrt, die man zu verwenden. So benennen Sie Ihre private var Absender.
InformationsquelleAutor SynerCoder