В моем файле настроек я хотел бы иметь один параметр, который относится к типу List (Myclass).... Я не могу найти что-либо в сети, которое делает это. Возможно ли это?
Можете ли вы иметь общий список (T) в вашем файле настроек?
Ответ 1
Я предполагаю, что вы говорите о настройках пользователя...
Я не знаю, можно ли указать общий тип, хотя, если вы создаете свой собственный не общий тип, который наследуется от List (MyClass), вы можете без проблем указать этот тип как пользовательский.
Что-то вроде:
Public Class MyClassList
Inherits List(Of MyClass)
End Class
Затем вы должны иметь возможность просматривать MyClassList.
Ответ 2
Я согласен с тем, что решение наследования Meta-Knight является лучшим, однако это можно сделать, вручную отредактировав XML файл настроек. В обозревателе решений перейдите к: Solution > Project > Properties > Settings.settings. Щелкните правой кнопкой мыши Settings.settings и выберите "Open With". Выберите "XML (Text) Editor". Затем вставьте следующее внутри <Settings>
:
<Setting Name="TestGenericList" Type="System.Collections.Generic.List<int>" Scope="User">
<Value Profile="(Default)" />
</Setting>
сохранить, и он работает.
К сожалению, он не работает с общими типами, требующими двух или более типов, поскольку в этом атрибуте запятая не допускается. Даже сущность-кодировка (,
) не помогла.
Ниже приведена ошибка "Недопустимые символы в пути", когда вы переходите к редактированию файла настроек в конструкторе параметров:
<Setting Name="TestGenericDictionary" Type="System.Collections.Generic.Dictionary<string,string>" Scope="User">
<Value Profile="(Default)" />
</Setting>
Ответ 3
Возможно, я немного опоздал на игру в предоставлении решения для этого ответа, но вы могли бы включить свойство общих настроек в частичный класс в другом файле проекта, поэтому Design Designer не будет перезаписывать какие-либо пользовательские добавленный код.
В моем случае (с использованием VB.NET) я хотел сохранить Dictionary(Of String, String)
в My.Settings, за исключением того, что словарь должен быть сериализован как двоичный, потому что он не легко сериализуется в XML. Я удалил свойство настройки из конструктора, а затем добавил файл Settings.Extended.vb в свой проект со следующим кодом внутри:
'** Keeping My.Settings.FormLayouts out of Settings.Designer.vb so that this custom code is not overwritten by Visual Studio.'
Namespace My
Partial Friend NotInheritable Class MySettings
<Configuration.UserScopedSettingAttribute(), _
DebuggerNonUserCodeAttribute(), _
Configuration.SettingsSerializeAs(Configuration.SettingsSerializeAs.Binary)> _
Public Property FormLayouts() As Dictionary(Of String, String)
Get
Return CType(Me("FormLayouts"), Dictionary(Of String, String))
End Get
Set(ByVal value As Dictionary(Of String, String))
Me("FormLayouts") = value
End Set
End Property
End Class
End Namespace
Свойство FormLayouts по-прежнему является частью My.Settings и будет загружено и сохранено как обычно, но добавление дополнительных параметров в приложении Design Designer не перезапишет вышеприведенный код.
Ответ 4
Вы можете преобразовать строку List<T>
в строку и поместить ее в свой файл настроек.
Будет ли это работать?
Ответ 5
Да, возможно, просто введите List <SomeType> в поле типа вручную, он должен работать.