:: Не фоксом единым
C# указать тип в параметрах
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Захотелось в параметрах программы увидеть список или массив. Получил:

[attachment 27703 s1.png]

Если получать доступ с помощью foreach (или for + по индексу Properties.Settings.Default.myParam[i]) - всё нормально. Но, обратиться с помощью LINQ - нельзя. На

var result = Properties.Settings.Default.myParam.Where(a => a == "3");

ругается. Пришлось сделать

IEnumerable<string> myParam = Properties.Settings.Default.myParam.Cast<string>();
var result = myParam.Where(a => a == "3");

Так не ругается, но - напрягает лишняя переливашка. Вопрос - можно как то от неё избавиться? Например, на закладке "Параметры" указать не System.Collections.Specialized.StringCollection, а List<string> или ещё что, то - для чего есть LINQ?
Ratings: 0 negative/0 positive
Re: C# указать тип в параметрах
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
stackoverflow.com
Если захочешь задать значение по умолчанию, то просто возьми тот же xml который создаёт редактор для StringCollection. Как назначить свой редактор для gui студии я не в курсе - по идее для этого нужно design-time атрибуты прописать для типа (Editor, возможно TypeConverter) - т.е. сделать свой класс-обёртку над List<string>.
Кстати, если так сделать (добавить свой класс обёртку - уже не Generic, конечно) то можно будет через интерфейс редактора setting-ов прописать такой тип. А если этот тип будет в другой сборке (добавленной в references этого проекта, и скомпилированной, конечно) то даже "выбором из списка" его можно будет добавить, а не вбиванием в виде текста имени класса

В общем то всё это имеет чисто академический интерес, практической пользы в этом я не вижу. Ладно бы хотел коллекцию своих типов (или просто свой одиночный тип) хранить в настройках а так...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: C# указать тип в параметрах
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
В общем то всё это имеет чисто академический интерес, практической пользы в этом я не вижу.

Полностью согласен. Если "по простому" нельзя, то так сильно морочить голову смысла не вижу. В параметрах должно быть немного значений. Если много - надо переносить из параметров в отдельную таблицу. А для пяти или семи значений коллекции можно после Cast<string>() и ToList() и ToArray() указать - потери производительности явно не будет .
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика