C# указать тип в параметрах | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Захотелось в параметрах программы увидеть список или массив. Получил:
[attachment 27703 s1.png] Если получать доступ с помощью foreach (или for + по индексу Properties.Settings.Default.myParam[i]) - всё нормально. Но, обратиться с помощью LINQ - нельзя. На
ругается. Пришлось сделать
Так не ругается, но - напрягает лишняя переливашка. Вопрос - можно как то от неё избавиться? Например, на закладке "Параметры" указать не System.Collections.Specialized.StringCollection, а List<string> или ещё что, то - для чего есть LINQ? |
Re: C# указать тип в параметрах | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
stackoverflow.com
Если захочешь задать значение по умолчанию, то просто возьми тот же xml который создаёт редактор для StringCollection. Как назначить свой редактор для gui студии я не в курсе - по идее для этого нужно design-time атрибуты прописать для типа (Editor, возможно TypeConverter) - т.е. сделать свой класс-обёртку над List<string>. Кстати, если так сделать (добавить свой класс обёртку - уже не Generic, конечно) то можно будет через интерфейс редактора setting-ов прописать такой тип. А если этот тип будет в другой сборке (добавленной в references этого проекта, и скомпилированной, конечно) то даже "выбором из списка" его можно будет добавить, а не вбиванием в виде текста имени класса В общем то всё это имеет чисто академический интерес, практической пользы в этом я не вижу. Ладно бы хотел коллекцию своих типов (или просто свой одиночный тип) хранить в настройках а так... ------------------ WBR, Igor |
Re: C# указать тип в параметрах | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Полностью согласен. Если "по простому" нельзя, то так сильно морочить голову смысла не вижу. В параметрах должно быть немного значений. Если много - надо переносить из параметров в отдельную таблицу. А для пяти или семи значений коллекции можно после Cast<string>() и ToList() и ToArray() указать - потери производительности явно не будет . |
© 2000-2024 Fox Club  |