我有一個名為 Email 的類,它存盤在一個類別庫中,該類別庫將包含來自我 UI 中文本框的值(抱歉,代碼量很大):
namespace MessageLibrary
{
public class Email
{
private int _emailID;
private string _emailSubject;
private string _emailSender;
private string _emailContent;
public int EmailID {get , set}
public string EmailSubject {get , set}
public string EmailSender {get , set}
public string EmailContent {get , set}
我在下面有一個方法可以添加該類的一個實體:
public void AddEmail()
{
Email aEmail = new Email();
int emailID = Convert.ToInt32(txtID.Text);
string emailSender = Convert.ToString(txtSender.Text);
string emailSubject = Convert.ToString(txtSubject.Text);
string emailContent = Convert.ToString(txtContentClean.Text);
if (txtContentClean.Text.Length <= 1028 && txtSubject.Text.Length <= 20 && txtID.Text.Length == 9)
{
try
{
aEmail.EmailID = emailID;
aEmail.EmailSender = emailSender;
aEmail.EmailSubject = emailSubject;
aEmail.EmailContent = emailContent;
}
catch (Exception exp)
{
throw new ArgumentException(exp.Message);
}
}
emails.Add(aEmail);
}
我有一個類,其中包含我的 MainProgram.Xaml.cs 中每個電子郵件實體的串列:
public class EmailList
{
private List<Email> _list = new List<Email>();
public List<Email> Emails => _list;
public void add(Email newEmail)
{
_list.Add(newEmail);
}
}
最后,我有一個按鈕可以將其序列化為 .txt 檔案中的 JSON:
private void btnExport_Click(object sender, RoutedEventArgs e)
{
var emailList = new EmailList();
var obj = JsonConvert.SerializeObject(emailList.Emails, Formatting.Indented);
File.WriteAllText(@"C:\Users\patri\OneDrive\Desktop\test.txt", obj);
}
我目前在我的 AddEmail() 方法的最后一行收到錯誤訊息“名稱電子郵件在當前背景關系中不存在”。
我對 OO 真的很陌生,任何人都可以提供幫助并向我展示如何正確添加類的每個實體并序列化值。
uj5u.com熱心網友回復:
您似乎缺少此變數“電子郵件”的定義。看起來您已經在類 EmailList 中定義了。
您可以參考回“電子郵件”(“電子郵件”中的錯字)或定義 var emails = new List()。
uj5u.com熱心網友回復:
List<Email>直接在您的MainProgram.xaml.cs班級中將“電子郵件”定義為一個欄位,并去掉多余的EmailList班級:
private readonly List<Email> emails = new List<Email>();
public void AddEmail()
{
Email aEmail = new Email();
//... same code as before
emails.Add(aEmail);
}
private void btnExport_Click(object sender, RoutedEventArgs e)
{
var obj = JsonConvert.SerializeObject(emails, Formatting.Indented);
File.WriteAllText(@"C:\Users\patri\OneDrive\Desktop\test.txt", obj);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385806.html
