簡體   English   中英

如何從配置文件加載統一設置?

[英]How to load unity settings from config file?

我有一個統一配置文件( App.config )如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <alias alias="IProductService" type="UnityExample.Service.IProductService, UnityExample.Service" />
    <containers>
      <container name="Service">
        <register type="IProductService" mapTo="ProductService"/>
      </container>
    </containers>
  </unity>
</configuration>

現在我想從上面的file 加載配置。

var container = new UnityContainer().LoadConfiguration("Service");

但我收到以下錯誤:

[ArgumentNullException:Value不能為null。 參數名稱:section] Microsoft.Practices.Unity.Configuration.UnityContainerExtensions.LoadConfiguration(IUnityContainer容器,UnityConfigurationSection部分,String containerName)

我能夠讓它發揮作用。 我使用您正在使用的相同名稱空間創建了一個演示控制台應用程序,如下所示:

大會信息

安裝Nuget包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Unity" version="5.8.6" targetFramework="net461" />
  <package id="Unity.Abstractions" version="3.3.0" targetFramework="net461" />
  <package id="Unity.Configuration" version="5.2.3" targetFramework="net461" />
</packages>

App.Config中:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
    </configSections>

    <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
        <assembly name="UnityExample" />
        <namespace name="UnityExample.Service" />

        <containers>
            <container name="Service">
                <register type="IProductService" mapTo="ProductService"/>
            </container>
        </containers>
    </unity>

    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Unity.Configuration" publicKeyToken="6d32ff45e0ccc69f" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

碼:

namespace UnityExample.Service
{
    public interface IProductService
    {

    }

    public class ProductService : IProductService
    {
    }
}

主要:

using System.Configuration;
using Microsoft.Practices.Unity.Configuration;

using Unity;
using UnityExample.Service;

namespace UnityExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var container = new UnityContainer();
            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
            section.Configure(container, "Service");

            IProductService service = container.Resolve<IProductService>();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM