Какой метод конфигурации Вы предпочитаете в .NET? Почему? [закрытый]

На фреймы данных обычно ссылаются следующим образом. Предполагая, что ваш фрейм данных называется df

df.loc[row_name, column_name] = val

В качестве альтернативы,

df.iloc[row_index, column_index] = val

.loc использует явные имена столбцов / строк и .iloc использует числовой индекс (так же, как numy или список).

Итак, в вашем примере, предполагая, что вы не изменили индекс по умолчанию, и предполагая, что оба столбца на самом деле являются столбцами данных, а не индексом

df.loc[2, 'ColumnB'] = [q,y]

или , equivelantly

df.iloc[2, 1] = [q,y]

Однако для Dataframes индекс так же важен, как и столбцы, когда речь идет о ссылках на значения. Из вашего вопроса не ясно, что вы использовали в качестве индекса и каковы ваши фактические столбцы данных.

Редактировать:

Ошибка ValueError может быть преодолена с помощью Dataframe.at, то есть try

df.at[2, 'ColumnB'] = [q,y]

18
задан Mitchel Sellers 22 September 2008 в 09:29
поделиться

13 ответов

Когда пары значения ключа недостаточно, я использую Разделы Конфигурации, поскольку они не сложны для использования (если Вам не нужен сложный раздел):

Определяют Ваш пользовательский раздел:

        public class CustomSection : ConfigurationSection
        {
            [ConfigurationProperty("LastName", IsRequired = true,
            DefaultValue = "TEST")]
            public String LastName
            {
                get { return (String)base["LastName"]; }
                set { base["LastName"] = value; }
            }

            [ConfigurationProperty("FirstName", IsRequired = true, DefaultValue =
            "TEST")]
            public String FirstName
            {
                get { return (String)base["FirstName"]; }
                set { base["FirstName"] = value; }
            }

            public CustomSection()
            {

            }
        }

Программно создают Ваш раздел (если он уже не существует):

           // Create a custom section.
            static void CreateSection()
            {
                try
                {

                    CustomSection customSection;

                    // Get the current configuration file.
                    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(@"ConfigurationTest.exe");

                    // Create the section entry  
                    // in the <configSections> and the 
                    // related target section in <configuration>.
                    if (config.Sections["CustomSection"] == null)
                    {
                        customSection = new CustomSection();
                        config.Sections.Add("CustomSection", customSection);
                        customSection.SectionInformation.ForceSave = true;
                        config.Save(ConfigurationSaveMode.Full);
                    }
                }
                catch (ConfigurationErrorsException err)
                {
                    //manage exception - give feedback or whatever
                }

            }

После определения CustomSection и фактического CustomSection будет создан для Вас:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="CustomSection" type="ConfigurationTest.CustomSection, ConfigurationTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" allowLocation="true" allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" overrideModeDefault="Allow" restartOnExternalChanges="true" requirePermission="true" />
  </configSections>
  <CustomSection LastName="TEST" FirstName="TEST" />
</configuration>

Теперь Получают Ваши свойства раздела:

    CustomSection section = (CustomSection)ConfigurationManager.GetSection("CustomSection");
    string lastName = section.LastName;
    string firstName = section.FirstName;
21
ответ дан 21 October 2019 в 05:30
поделиться

набор данных. WriteXML () / набор данных. ReadXML () работают вполне прилично на меня, когда app.config больше не сокращает его.

0
ответ дан 21 October 2019 в 05:30
поделиться

Главным образом я предпочитаю использовать пользовательский XML-файл и метод XML-сериализации, чтобы прочитать и записать этому файлы конфигурации... Не ограниченный парами ключ/значение и не сложный для реализации...

0
ответ дан 21 October 2019 в 05:30
поделиться

Мне везло, прокручивая мой собственный специальный класс, который возвращает данные конфигурации из ".settings" файла, связанного с блоком вызова. Файл является XML, и класс настроек выставляет его публично как XDocument. Кроме того, индексатор для этого класса настроек возвращает значения элемента от/settings/setting узлов.

Работает отлично для простых приложений, где Вам просто нужен доступ пары ключ/значение к настройкам, и работает отлично для сложных настроек, где необходимо определить собственную структуру и использовать Систему. Xml. Linq для запросов XML-документа.

Другое преимущество прокрутки Вашего собственного - то, что можно использовать FileSystemWatcher и тип Действия обратного вызова для автоматического увольнения метода, когда файл изменяется во времени выполнения.

0
ответ дан 21 October 2019 в 05:30
поделиться

Если я могу выйти сухим из воды, я буду просто использовать Приложение. Конфигурация, однако, если мне нужно что-то более сложное, я буду использовать разделы пользовательской конфигурации. Да это - боль для получения понимания в начале, но объединенный источник конфигурации и знакомая конфигурация для всех настроек стоят инвестиций времени, по-моему.

12
ответ дан 21 October 2019 в 05:30
поделиться

Поместите свою конфигурацию в базу данных. Если Вы запускаете свое приложение больше чем на 1 машине (например, приложение клиент-сервер) затем, всеми системами конфигурации на машину является ЛАВАШ. Единственной областью конфигурации является лучший способ поместить Вашу конфигурацию. Запишите gui для управления им, и Вы будете очень счастливы.

Развертывание app.config файлы к 200 клиентским полям.. не забава, особенно когда по каждому скучают (и они делают, верьте мне).

4
ответ дан 21 October 2019 в 05:30
поделиться

Я нахожу NameValueCollectionHandler самое легкое и лучшее, и я обычно связывался бы прочь с внешним файлом конфигурации через атрибут configSource.

я пытаюсь поместить АБСОЛЮТНУЮ минимальную конфигурацию в файлы конфигурации с большей частью из него настраиваемый в коде с Приложением, которое является обладающим самосознанием из его среды развертывания (такой как названием машины или IP-адресом, если известный). Конечно, это необходимое намного больше предварительного планирования и знание Ваших сред, но намного меньше головной боли при развертывании.

1
ответ дан 21 October 2019 в 05:30
поделиться

Я был сетью/системным администратором в прошлом, и теперь я разрабатываю внутренние утилиты для приложений базы данных. То, что я нашел, является этим:

Простые Невложенные конфигурационные файлы являются лучшими для приложений, которые не будут изменяться, где они получают доступ к своим ресурсам очень.

Что-либо более сложные потребности войти в базу данных с администрированием UI. Это только относится к пользователям постоянного бизнеса. Если Вы волнуетесь по поводу повреждаемой базы данных, то используйте сложный подход конфигурационного файла. Файлы имеют тенденцию повреждать меньше, чем базы данных.

Теперь, если Ваши пользователи будут другими разработчиками, то у Вас будет намного больше гибкости, на том, что использовать для хранения конфигураций.

2
ответ дан 21 October 2019 в 05:30
поделиться

Я вещь конфигурации ключа/значения работаю вполне прилично на простые файлы конфигураций. Это становится проблемой, когда файл начинает расти и трудный поддержать. Мы начали разделять конфигурационный файл к "общим" и "определенным" конфигурациям приложений. Доступ к файлу очевиден для приложения, "общие" значения являются тем же в большинстве случаев, но "конкретный" отличаются для каждого развертываемого приложения.

1
ответ дан 21 October 2019 в 05:30
поделиться

Я использую пользовательский xml файл конфигурации. Каждая установка имеет ключ, значение и тип.

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

я недавно создал шаблон T4 , который прочитает файл конфигурации и создаст статический класс настроек со строгим контролем типов. Это было огромным средством экономии времени.

1
ответ дан 21 October 2019 в 05:30
поделиться

Я использую пользовательский файл настройки XML, где другой файл конфигурации используется для каждой среды (dev/qa/prod). Файлы конфигурации являются шаблонами, которые динамично инстанцируют с вещами как хост/конфигурации порта к сервисам - это делает много среды и обработку отказа очень легкими, поскольку это может быть обработано шаблонным кодом инстанцирования.

, Конечно, если Вы имеете очень мало конфигурации и не обеспокоены несколькими средами затем app.config, является более стандартным и, вероятно, лучший способ пойти.

1
ответ дан 21 October 2019 в 05:30
поделиться

Если у Вас есть.NET 3,0 доступных, я нахожу очень удобное XamlReader/XamlWriter для хранения настроек. Они могут запись-чтение любой объект.NET к XAML если:

  • объект имеет конструктора без параметров
  • , свойства к чтению-записи имеют общедоступные методы считывания и методы set

, особенно хорошо, что Вы не должны украшать свои объекты настроек никакими атрибутами.

0
ответ дан 21 October 2019 в 05:30
поделиться

Я сохраняю большую часть своей конфигурации в контейнере МОК, например, Spring. Сеть.

0
ответ дан 21 October 2019 в 05:30
поделиться
Другие вопросы по тегам:

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