Использование настроек со сложными типами - PullRequest
9 голосов
/ 02 марта 2009

Я использую класс Настройки в моем проекте .NET. Я заметил в редакторе, что только определенные типы доступны для использования в качестве типов для отдельных свойств в классе «Настройки». Что, если я хотел бы иметь свойство, которое было перечислением из моего кода или общей коллекцией, например? Как бы я это реализовал?

Я предполагаю, что я могу сделать это в отдельном файле, используя механизм частичного класса (так как Настройки уже определены как частичный класс), но я хочу посмотреть, согласен ли кто-нибудь с этим и есть ли способ сделай это в редакторе.

Ответы [ 5 ]

10 голосов
/ 03 марта 2009

Создайте новый файл «Настройки» для добавления сложного / определенного пользователем типа выбора. Вот инструкции для Enum.

Шаг 1 . Создать файл настроек

alt text

Шаг 2 . Искать тип

alt text

Шаг 3 . Выберите тип (Namespace.TypeName)

alt text

Шаг 4 . Та да - Готово

alt text

4 голосов
/ 23 сентября 2009

Чтобы пользовательский класс отображался в этом списке, убедитесь, что у него есть конструктор по умолчанию в качестве одного из вариантов построения. Я научился этому нелегко

2 голосов
/ 24 декабря 2011

Чтобы ответить на комментарий / вопрос Джеффри о том, возможны ли общие списки в файле настроек, ответ - да. Вам просто нужно отредактировать XML-файл настроек вручную. Например, если у меня есть следующий класс:

public class UrlAlias
{
    public string Name { get; set; }
    public string BaseUrl { get; set; }
}

Я могу создать их список, щелкнув правой кнопкой мыши по моему файлу настроек и выбрав Открыть с помощью ...

Затем выберите XML / Text Editor и установите для значения «Тип» полное имя класса, то есть:

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]"

Полные настройки xml будут выглядеть так:

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings">
 <Profiles />
  <Settings>
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User">
      <Value Profile="(Default)"></Value>
    </Setting>
  </Settings>
</SettingsFile>

После этого у вас должен быть правильно настроенный список созданного вами объекта пользовательских настроек.

0 голосов
/ 02 марта 2009

Если вы хотите иметь возможность заполнять сложные объекты через файлы конфигурации, я бы предложил использовать некоторые Dependency Injection Framework s.a. Spring.Net.

0 голосов
/ 02 марта 2009

Делать это в отдельном файле как часть частичного класса вполне допустимо.

...