Пользовательский тип данных в Settings.settings как массив класса

Я искал в Интернете и нашел, как добавить определенный пользовательский тип данных в настройки. Я вставляю данные самостоятельно, а не с помощью кода во время работы программы. Моя проблема заключалась в том, как добавить пользовательский тип данных в поле со списком в дизайнере. Теперь разобрался и нужен совет, как добавить массив типа данных этого типа. Покажу на простом примере.

у меня есть этот класс

[Serializable()]
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
}

в settings.setting у меня есть настройка ProductSettings, введите MyApp.Data.Product, область действия Application, а значение по умолчанию содержит следующее

<xml definition>
<Product xlmns:xsi=.....>
<Name>Banana</Name>
<Price>1</Price>
</Product>

Таким образом, это работает просто отлично. Но теперь мне нужно получить коллекцию продуктов из файла настроек, поэтому я попытался указать тип как MyApp.Data.Product[], но это невозможно. Всплывающее окно конструктора с сообщением «MyApp.Data.Product[] не определен.». Как я могу понять это?

Спасибо

PF: этот проект - просто библиотека классов, используемая из приложения WPF - если это имеет значение


person Ondrej Janacek    schedule 20.08.2011    source источник


Ответы (1)


Используйте System.Collections.Generic.List‹MyApp.Data.Product›. Или вы можете создать класс, наследуемый от List‹MyApp.Data.Product›

Тогда в значении у вас будет такой формат:

<ArrayOfProduct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=
"http://www.w3.org/2001/XMLSchema">
  <Product>
    <Name>Banana</Name>
    <Price>1</Price>
  </Product>
</ArrayOfProduct>
person LostInComputer    schedule 30.08.2011
comment
Спасибо за совет, но VS по-прежнему выдает сообщение об ошибке Тип: System.Collections.Generic.List‹MyApp.Data.Product› не определен. - person Ondrej Janacek; 04.09.2011
comment
Я не знаю, что случилось. Вот пример того, как я это сделал: dl.dropbox.com/u/14576915/ CollectionInSettings.zip - person LostInComputer; 05.09.2011
comment
Действительно хороший образец, я ценю его, но он дает мне NullPointerException в методе ShowProduct :( К счастью, ваше второе решение решило мою проблему (класс, производный от List‹Product›). Этот редактор настроек в VS действительно глуп, он даже не добавил xml теги для меня, поэтому я должен скопировать их сам. Добавьте еще один ответ на этот вопрос (ответ с рабочим решением для меня), и я отмечу его как хороший ответ -› вы получите баллы, а пользователи найдут рабочее решение для эта проблема ;-) Еще раз спасибо. - person Ondrej Janacek; 05.09.2011