【问题标题】:add instance of class to a list将类的实例添加到列表中
【发布时间】:2022-01-20 01:19:05
【问题描述】:

我有一个名为 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 中每个 Email 实例的列表:

        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() 方法的最后一行收到错误消息“名称 emails 在当前上下文中不存在”。

我是 OO 的新手,任何人都可以帮助并告诉我如何正确添加类的每个实例并序列化值。

【问题讨论】:

    标签: c# json wpf serialization


    【解决方案1】:

    直接在MainProgram.xaml.cs 类中将“电子邮件”定义为List&lt;Email&gt; 字段,并去掉多余的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);
    }
    

    【讨论】:

      【解决方案2】:

      您似乎缺少此变量“电子邮件”的定义。看起来您已经在类 EmailList 中定义了。

      您可以引用回“电子邮件”(来自“电子邮件”的错字)或定义 var emails = new List()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多