У меня есть простое приложение WPF
, которое позволяет пользователю управлять своими работниками. Пользователь может добавлять, удалять и редактировать рабочих. Я хотел бы запомнить пользователей и их работников после перезапуска приложения, поэтому я думаю, что мне нужно использовать настройки Visual Studio
(я имею в виду файл и Settings
класс). Мое приложение отображает окно входа в систему, пользователь вводит логин и пароль, а также отображает основные окна, позволяющие видеть и создавать рабочие места пользователя. Когда пользователь входит в систему, я хотел бы загрузить его список сотрудников, и после выхода из него я хотел бы сохранить измененный список. Я создал настройку под названием AllUsers
типа UserCollection
. Вот код этого простого класса и User
класс:Настройки Visual Studio не работают
public class UserCollection
{
public UserCollection(IEnumerable<User> users = null)
{
Users=new List<User>(users ?? new List<User>());
}
public List<User> Users;
}
public class User
{
public string Login { get; }
public string Password { get; }
public ObservableCollection<Worker> Workers { get; set; }
public User(string login, string password)
{
Login = login;
Password = password;
Workers=new ObservableCollection<Worker>();
}
}
Тогда я написал класс PropertiesManager
, который будет управлять параметрами, обновления и сохраняет их. Вот код:
public static class PropertiesManager
{
public static List<User> Users
{
get
{
if (Settings.Default.AllUsers == null)
{
Settings.Default.AllUsers=new UserCollection();
Settings.Default.Save();
}
return Settings.Default.AllUsers.Users;
}
set
{
Settings.Default.AllUsers.Users = value;
Settings.Default.Save();
}
}
public static User VerifyUser(string login, string password)
{
User current = Users.FirstOrDefault(x => x.Login.Equals(login));
if (current == null)
{
current=new User(login,password);
Users.Add(current);
SaveUser();
}
return current;
}
public static void SaveUser()
{
Settings.Default.Save();
}
}
Я также думаю, что Settings.settings
файл может быть полезным:
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01 /settings" CurrentProfile="(Default)" GeneratedClassNamespace="HRManger.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="AllUsers" Type="HRManger.UserCollection" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>
Я заметил, что когда я войти как user1 добавить несколько рабочих и выйти из системы, а затем сделать то же самое, user2 и снова войдите в систему как user1, его рабочие отображаются правильно. Однако, когда я перезапущу приложение, я потеряю все. Я не знаю, что я сделал не так. Забыл ли я о чем-то важном?
О, я знаю, что могу сохранить общий тип '' List в настройках, когда я пишу '<Установка Name = "AllUsers" Тип = "System.Collections.Generic.List <HRManager.Model.User>" Scope =» Пользователь ">', но это не имеет значения –
bakala12