Вопрос

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

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

Это было полезно?

Решение

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

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

alt text

Шаг 2.Найдите тип

alt text

Шаг 3.Выберите тип (Пространство имен.Имятипа)

alt text

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

alt text

Другие советы

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

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

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

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

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

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>

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top