C# Unity IOC 在 App.conf 中注册新类型

C# Unity IOC register new types in App.conf

目前在我的 winforms 应用程序中,我的所有类型都在 Main 方法中注册。 我正在寻找解决方案如何在 App.conf 中注册所有新类型? 这可能吗?

我目前在我的应用中使用的是:

    [STAThread]
    static void Main(string[] args)
    {
        UnityContainer ioc = new UnityContainer();

        // This move in app.conf
        ioc.RegisterType<Customer>();
        ioc.RegisterType<MainWindow>();
        ioc.RegisterType<IDatabase, MySqlDatabase>();

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(ioc.Resolve<MainWindow>());
    }

可以在 app.config 中注册类型。我编写了简单的控制台应用程序来说明:

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

namespace MyNamespace
{
    public interface ILogger
    { }

    public class TheLogger : ILogger
    { }

    class Program
    {
        private static void Main(string[] args)
        {
            IUnityContainer container = new UnityContainer();
            container.LoadConfiguration();

            var logger = container.Resolve<ILogger>();
        }
    }
}

和app.config(TheLoggerclass注册为ILogger的实现):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <namespace name="MyNamespace" />
    <assembly name="MyApp" />
    <container>
      <register type="ILogger" mapTo="TheLogger" />
    </container>
  </unity>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
</configuration>

有关详细信息,请查看此 MSDN page