Ошибка при попытке получить раздел с помощью XYZ pcmsim = (XYZ) appConfig.GetSection ("XYZ"); - PullRequest
0 голосов
/ 09 мая 2019

Требуется объяснение типа раздела конфигурации по следующей ссылке MSDN Свойство конфигурации

Возникла проблема со следующим разделом

    <configuration>
      <configSections>
        <section name="CustomSection" type="ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample" 
          allowDefinition="Everywhere" allowExeDefinition="MachineToApplication" 
          restartOnExternalChanges="true" />
      </configSections>
      <CustomSection fileName="override.txt" alias="alias.txt" 
        maxUsers="1000" maxIdleTime="00:05:00" />
    </configuration>

Имя раздела имеет тип.Мне нужно знать, что я должен использовать для имени до и после запятой.Я открыл обозреватель решений и просмотрел ссылки на мою сборку.Я предполагаю, что ссылки и тип должны совпадать.Мое приложение, многие вложенные классы и веб-страница MSDN не дают хорошей информации о том, как ссылаться на объект во вложенных классах.

1 Ответ

0 голосов
/ 17 июня 2019

Значение, данное для атрибута type, представляет собой имя с указанием сборки типа CustomSection.

Из документации Type.AssemblyQualifiedName

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

ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample слева направо состоит из

  1. пространства имен: ConfigurationPropertyExample
  2. имени типа / класса: CustomSection
  3. отображаемого имени сборки, содержащейтип CustomType: ConfigurationPropertyExample
    (В большинстве случаев это будет имя файла сборки без расширения (.dll или .exe).)

Используйте свойство Type.AssemblyQualifiedName для получения имени, соответствующего типу сборки.

var assemblyQualifiedName = typeof(CustomSection).AssemblyQualifiedName;

Возвращаемое значение может включать в себя не только пространство имен, класс и сборку,
какмаркер версии, культуры и открытого ключа (см. с указанием имен сборок ), например.

ConfigurationPropertyExample.CustomSection, ConfigurationPropertyExample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

В большинстве случаев нет необходимости включать эти последние в определение конфигурации type, если только вы не используете сборок со строгими именами .


В случае вложенных классов знаку плюс (+) будет предшествовать вложенному классу в имени, дополненном сборкой.

Если класс CustomSectionбыл определен как вложенный класс класса Settings, тогда его имя, соответствующее сборке, будет ConfigurationPropertyExample.Settings+CustomSection, ConfigurationPropertyExample.

namespace ConfigurationPropertyExample
{
    public class Settings
    {  
        public sealed class CustomSection : ConfigurationSection
        {
            // ...
        }       
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...