Почему я не могу выбрать настраиваемый тип для параметра из того же проекта/сборки, что и файл настроек?
Я пытаюсь установить тип свойства параметра приложения в пользовательский тип перечисления, который я определил в своей сборке (вызовите этот проект A)
В браузере настроек я нажимаю кнопку "Обзор" и отображается диалоговое окно "Выбрать тип".
И типы, определенные в проекте A, мне кажутся недоступными. Тем не менее, типы доступны из других проектов, на которые ссылался A.
Мне кажется почти непонятным, что нельзя использовать типы, определенные в базовом проекте, поэтому я предполагаю, что я делаю что-то неправильно. Я пробовал строить, чистить, восстанавливать, перезапускать без везения, так что именно я не хватает?
edit: снимок экрана здесь http://tinypic.com/r/2ls8myb/7
Ответы
Ответ 1
Я пытался сделать то же самое в VS 2010 (.net 3.5). Оказывается, вы можете сделать это, используя конструктор настроек. Пользовательский интерфейс полностью испорчен, как указано, но если вы вручную укажете полное имя переименования в окне "Обзор", оно будет работать. Это имеет преимущество не изменять сгенерированный код (*.Designer.cs), который всегда хорошо избегать, потому что когда вы там ничего не гарантируете, что вы измените, не будет перезаписано.
PS - Это работает только в том случае, если enum является общедоступным.
Настройки GUI:
![enter image description here]()
Затем вручную введите полное имя типа:
![enter image description here]()
В какой-то момент я клянусь, что увидел столбец значений перечисления в столбце Value, но с тех пор я его не видел, и вам просто нужно ввести соответствующее значение.
Ответ 2
Я тоже не смог найти свой собственный тип. Я смог добавить свой собственный тип, открыв файл Settings.settings в текстовом редакторе и добавив параметр в раздел "Настройки" следующим образом:
<Setting Name="Options" Type="MyProject.MyOptions" Scope="User">
<Value Profile="(Default)" />
</Setting>
Дизайнер настроек жалуется, когда я его открываю, но я просто отвечаю "Нет" на этот диалог, и я могу использовать пользовательские настройки в своем проекте.
Ответ 3
Потому что ваш собственный тип не сериализуем. Сделайте сериализуемым, и вы можете определить его в своих настройках.