Как создать пользовательский раздел конфигурации в app.config? [дубликат]

я полагаю, что DI является способом формирования или instantianting боб. DI может быть сделан во многих отношениях как конструктор, метод считывания метода set и т.д.

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

Проверка эта ссылка: Внедрение зависимости

90
задан iliketocode 10 August 2016 в 14:29
поделиться

2 ответа

Импортировать пространство имен:

using System.Configuration;

Создать ConfigurationElement Company:

public class Company : ConfigurationElement
{

        [ConfigurationProperty("name", IsRequired = true)]
        public string Name
        {
            get
            {
                return this["name"] as string;
            }
        }
            [ConfigurationProperty("code", IsRequired = true)]
        public string Code
        {
            get
            {
                return this["code"] as string;
            }
        }
}

ConfigurationElementCollection:

public class Companies
        : ConfigurationElementCollection
    {
        public Company this[int index]
        {
            get
            {
                return base.BaseGet(index) as Company ;
            }
            set
            {
                if (base.BaseGet(index) != null)
                {
                    base.BaseRemoveAt(index);
                }
                this.BaseAdd(index, value);
            }
        }

       public new Company this[string responseString]
       {
            get { return (Company) BaseGet(responseString); }
            set
            {
                if(BaseGet(responseString) != null)
                {
                    BaseRemoveAt(BaseIndexOf(BaseGet(responseString)));
                }
                BaseAdd(value);
            }
        }

        protected override System.Configuration.ConfigurationElement CreateNewElement()
        {
            return new Company();
        }

        protected override object GetElementKey(System.Configuration.ConfigurationElement element)
        {
            return ((Company)element).Name;
        }
    }

и ConfigurationSection:

public class RegisterCompaniesConfig
        : ConfigurationSection
    {

        public static RegisterCompaniesConfig GetConfig()
        {
            return (RegisterCompaniesConfig)System.Configuration.ConfigurationManager.GetSection("RegisterCompanies") ?? new RegisterCompaniesConfig();
        }

        [System.Configuration.ConfigurationProperty("Companies")]
            [ConfigurationCollection(typeof(Companies), AddItemName = "Company")]
        public Companies Companies
        {
            get
            {
                object o = this["Companies"];
                return o as Companies ;
            }
        }

    }

, а также необходимо зарегистрировать новый раздел конфигурации в web.config (app. config):

<configuration>       
    <configSections>
          <section name="Companies" type="blablabla.RegisterCompaniesConfig" ..>

затем вы загружаете свою конфигурацию с помощью

var config = RegisterCompaniesConfig.GetConfig();
foreach(var item in config.Companies)
{
   do something ..
}
144
ответ дан 24 November 2019 в 07:04
поделиться

You should check out Jon Rista's three-part series on .NET 2.0 configuration up on CodeProject.

Highly recommended, well written and extremely helpful!

It shows you very clearly how to write the necessary classes (deriving from ConfigurationElement and/or ConfigurationSection) in order to design the custom config sections you need.

9
ответ дан 24 November 2019 в 07:04
поделиться
Другие вопросы по тегам:

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