Я проводил некоторые базовые тесты и, к удивлению «НЕТ» ... все вышеперечисленное действительно работает.Вам просто нужно убедиться, что если вы хотите передать данные в раздел конфигурации, то по умолчанию они доступны только для чтения.Таким образом, вам нужно будет переопределить метод isReadOnly (), чтобы вышеуказанный код работал.
Итак, решение состоит в том, что вышеприведенный кусок кода работает ... вам просто нужно переопределить дополнительныйметод, позволяющий вам получить доступ к коллекции, отвечающей за хранение данных вашего элемента, и манипулировать ее содержимым через свойства, которые вы определяете в классе, который расширяет или наследует от класса элемента конфигурации.
UPDATE:
Приведенный выше пример кода, который я вставил, позволяет вам редактировать то, что уже существует в файле конфигурации внутри вашего пользовательского раздела.Для добавления нового элемента, например, такого как:
FavsSection favconfig = (FavsSection)config.GetSection("FavouritesMenu");
ToolStripMenuItem menu = (ToolStripMenuItem)returnMenuComponents("favouritesToolStripMenuItem", form);
ToolStripItemCollection items = menu.DropDownItems;
for (int i = 0; i < items.Count; i++)
{
//favconfig.FavsItems[i].ID = i.ToString();
//favconfig.FavsItems[i].Path = items[i].Text;
favconfig.FavsItems[i] = new FavouriteElement()
{
ID = i.ToString(),
Path = items[i].Text
};
}
Как вы можете видеть выше, я физически добавляю новый объект 'FavouriteElement' в коллекцию, возвращаемую свойством favconfig.FavItems.,Чтобы сделать это, для его поддержки необходимо расширение одного свойства.
public FavouriteElement this[int idx]
{
get
{
return (FavouriteElement)BaseGet(idx);
}
set
{
base.BaseAdd(value);
}
}
Для этого индексатора или свойства paramterful, как его называет Джеффри Рихтер, должен быть реализован метод доступа Set, как показано выше вфрагмент кода.Я вставил его сюда, так как это не заняло много времени, и большая часть кода была изменена с использованием шаблона, который я использовал из статьи Дерика Уиттакера.Надеемся, что это позволит другим кодировщикам реализовать нечто подобное.
Другое решение состоит в том, чтобы просто вместо того, чтобы «собирать» коллекцию все время, чтобы «лассировать» вместе все мои «FavouriteElements», вы могли бы реализовать «набор»Accessor для связанной собственности.Я не проверял это, но мне стоит попробовать.