Как файл конфигурации выбрать?
От: Michael7 Россия  
Дата: 07.12.16 11:26
Оценка:
Код вроде
using System.Configuration;
...
class Program
    {   

        static string appconfigfile = "myprogram.exe.config";
        static Configuration config = ConfigurationManager.OpenExeConfiguration(appconfigfile);

        static string server = config.AppSettings["ServerName"];


Не работает, вызов config.AppSettings невозможен из-за

Ошибка 1 "System.Configuration.ConfigurationElement.this[string]" недоступен из-за его уровня защиты


Просто хочу в командной строке передавать в опциях имя файла конфигурации и чтобы работать с ним также как до этого было ConfigurationManager.AppSettings и т.п.

В msdn ничего такого, написано "Открывает указанный файл конфигурации клиента в качестве объекта Configuration." про метод OpenExeConfiguration
Re: Как файл конфигурации выбрать?
От: Sinix  
Дата: 07.12.16 12:02
Оценка: 9 (3)
Здравствуйте, Michael7, Вы писали:

M>Не работает, вызов config.AppSettings невозможен из-за

config.AppSettings.Settings. Угу, тёмное наследие первого фреймворка.

Только учитывайте, что appconfig — отличный способ заинжектить произвольный код в ваш процесс, к примеру, через
    <configSections>
        <section name="BadSection" type="BadType, BadAssembly"/>
    </configSections>
    <BadSection SomeProperty=1 />


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

Во-первых, надо каким-то чудом разместить сборку так, чтобы её видело приложение. Во-вторых, приложение должно явно перебирать config.Sections или обращаться к BadSection по имени. Но знать про такой момент всё-таки лучше, чеми не знать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.