C # Попытка сериализовать ArrayList в файл XML

1
struct ClientInfo
    {
        public string strName;  //Name by which the user logged into the chat room
        public string strPW;
    }

    ArrayList clientList = new ArrayList();

    public static void Serialize(ArrayList input)
    {
        XmlSerializer serializer = new XmlSerializer(input.GetType());
        TextWriter sw = new StreamWriter("users.txt");
        serializer.Serialize(sw, input);
        sw.Close();
    }

Поэтому я пытаюсь сохранить комбинации Name/Password в ArrayList, и я пытаюсь сохранить этот ArrayList в файл и загружать его каждый раз, когда программа запущена. Однако программа останавливается на serializer.Serialize(sw, input); выполните следующие действия:

Необработанное исключение типа "System.InvalidOperationException" произошло в System.Xml.dll

Что я делаю не так?

  • 0
    Есть ли причина, по которой вы не можете использовать List<ClientInfo> вместо ArrayList ?
  • 0
    Кстати; если вы посмотрите на исключение .InnerException , то XmlSerializer на самом деле очень хорош в объяснении причин, почему он не может что-то сделать
Теги:
serialization

1 ответ

1
Лучший ответ

Вот так; Я думаю, что это исправляет практически все проблемы...

public class ClientInfo // you meant "class" right? since that clearly isn't a "value"
{
    public string Name {get;set;} // use a property; don't use a name prefix
    public string Password {get;set;} // please tell me you aren't storing passwords
}

List<ClientInfo> clientList = new List<ClientInfo>(); // typed list

public static void Serialize(List<ClientInfo> input) // typed list
{
    if(input == null) throw new ArgumentNullException("input");
    XmlSerializer serializer = new XmlSerializer(typeof(List<ClientInfo>));
    using(TextWriter sw = new StreamWriter("users.txt")) // because: IDisposable
    {
        serializer.Serialize(sw, input);
        sw.Close();
    }
}
  • 0
    Это школьный проект, учитель выдал базовую версию программы, в которой он использовал struct, поэтому я придерживался ее. Это также причина, почему я храню пароли, как это: P
  • 2
    @ user3390443 тогда, пожалуйста, скажите моему учителю от моего имени, что они дают очень неправильный совет, и что если они захотят обсудить, почему и как это сделать правильно, я буду более чем готов обсудить это с ними кратко или по адресу длина, по электронной почте, скайпу, или как они выбирают.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню