2009-03-02 2 views
9

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

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

+0

Я не уверен, что правильно понял ваш вопрос, в основном часть о редакторе и «определенные типы доступны для использования в качестве типов», можете ли вы прояснить или перефразировать его? – mbillard

+0

Хорошо, если вы создаете файл Settings.settings в своем проекте, есть редактор, который вы можете использовать для установки типа данных, имени и т. Д. Настроек. Вы выбираете тип данных для параметра из поля TreeList. Это поле TreeList ссылается только на определенные типы. Типы в моей сборке не являются ссылками. –

+0

ссылка * не ссылки ... :) –

ответ

10

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

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

alt text

Шаг 2. Поиск по типу

alt text

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

alt text

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

alt text

+0

Спасибо, я не знал, что вы можете просто указать тип, и он будет работать. Знаете ли вы, можно ли указать общие списки для параметров таким же образом? –

+0

Файл настроек в основном позволяет вам возвращать любой тип, который вы хотите, насколько я знаю. Но по общим спискам вы имеете в виду общие коллекции? – Sung

+0

да, общие коллекции (хотя в моем случае мне нужен список) –

0

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

0

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

4

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

2

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

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

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

Затем выберите XML/редактор текста, и установите "Type" значение полное имя класса, то есть:

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> 

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

Смежные вопросы