У меня есть класс, который я хочу сохранить экземпляры в моем файле настроек. Я не могу сохранить класс, используя обычную команду properties.settings.default.save(). Ошибка не возникнет, но настройки не будут сохраняться между прогонами, и я понимаю, что это проблема с сериализацией.Как сохранить многомерный массив в пользовательском классе с настройками
Я задал проблему одной конкретной публичной многомерной массиве int. Если я изменяю массив 2d на 1d-массив, он отлично работает, но для моего приложения предпочтительнее использовать 2d-массив. Поскольку я все еще учусь, я хотел бы знать конкретно, почему это происходит.
Вопрос в том, почему не удается сохранить 2-мерный массив в настройках? это проблема сериализации? Как я могу реализовать это правильно?
public class AsmbLine
{
public int linenumber { get; set; }
public Ticket[] ticketlist { get; set; }
public string[] platesizes { get; set; }
public string[] platetypes { get; set; }
public string[] platecounts { get; set; }
public int[,] cellidsallowed { get; set; } // This Line is the problem
//public int[] cellidsallowed { get; set; } //uncomment these two lines to fix
//public int[] cellidsallowedtypes { get; set; } // uncomment these two lines to fix
Приветствия
** Редактировать **
Вот как я доступ/сохранить настройки. я найти при использовании пользовательских классов, его проще всего использовать отдельный BOOL для флага, если параметры инициализации впервые запуск
private void asmbinitializedcheckandload()
{
bool temp = false;
temp = Properties.Settings.Default.Asmbarrayinitialized;
if (temp == false) // if this is false, then we are running for the first time
{
Optimo20.Properties.Settings.Default.alines = new AsmbLine[maxlines]; //create new instance of alines[]
Properties.Settings.Default.Save(); // save
for (int i = 0; i < Properties.Settings.Default.alines.Length; i++)
{
Optimo20.Properties.Settings.Default.alines[i] = new AsmbLine(); // initialize each member of alines
}
Properties.Settings.Default.Asmbarrayinitialized = true; // set the flag to true, setting is initialized
Properties.Settings.Default.Save(); // save
}
alinearray = Optimo20.Properties.Settings.Default.alines; // load settings data into local array.
}
Поскольку вы изучаете этот сайт был бы идеальным для вас о том, как установить, что вам нужно [dontetperls 2D массив] (http://www.dotnetperls.com/2d-array) – MethodMan
Спасибо. Dotnetperls уже стал для меня огромным источником помощи! – metinoheat