Как обойти настройки области приложения, доступные только для чтения?

К сожалению, эта сокращенная нотация (которая вызывает «Символ # to_proc») не имеет способа передать аргументы вызываемому методу или блоку, поэтому вы даже не можете сделать следующее:

array_of_strings.map(&:include, 'l') #=> this would fail

НО, вам повезло, потому что вам действительно не нужен этот ярлык , чтобы делать то, что вы пытаетесь сделать. Амперсанд может преобразовать Proc или Lambda в блок, и наоборот:

my_routine = Proc.new { |str| str.upcase }
%w{ one two three }.map &my_routine #=> ['ONE', 'TWO', 'THREE']

Обратите внимание на отсутствие двоеточия до my_routine. Это связано с тем, что мы не хотим преобразовать символ :my_routine в proc, найдя метод и вызывая .method на нем, вместо этого мы хотим преобразовать my_routine Proc в блок и передать его в map .

Зная это, вы даже можете сопоставить собственный метод Ruby:

%w{ one two three }.map &method(:p)

Метод method будет принимать метод p и преобразовывать его в Proc, и & преобразует его в блок, который передается в map. В результате каждый элемент печатается. Это эквивалентно этому:

%w{ one two three }.map { |s| p s }
14
задан CannibalSmith 6 November 2009 в 12:39
поделиться

2 ответа

Если вы измените их на «пользовательские» настройки, их можно будет изменить в коде, и когда вы вызовете Save (), они будут сохранены в файле user.config в папке локальных настроек текущего пользователя. .

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

Если вы не хотите, чтобы они для пользователей, взгляните на класс ConfigurationManager . Это позволит вам вручную читать и записывать файлы .config. Однако помните, что папка c: \ program files \ защищена, и обычные пользователи не будут иметь к ней доступа (это приведет к появлению запросов UAC или сбоям в vista / win7).

12
ответ дан 1 December 2019 в 14:33
поделиться

Посмотрите здесь: Рекомендации по сохранению настроек приложения в приложении Windows Forms

Класс ApplicationSettings не поддержка сохранения настроек в app.config файл. Это очень похоже на дизайн, приложения, которые работают с правильным защищенная учетная запись пользователя (подумайте о Vista UAC) не имеют доступа на запись к папку установки программы.

Вы можете бороться с системой с помощью ConfigurationManager класс. Но тривиальный обходной путь - перейти к Дизайнер настроек и измените область настройки пользователя. Если это вызывает трудности (скажем, настройка актуально для каждого пользователя), вы должны поместите вашу опцию в отдельный программа, чтобы вы могли попросить Запрос на повышение привилегий. Или отказаться с помощью параметра.

0
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: