0

В настоящее время в моем приложении winforms все мои типы регистрируются в Main методе. Ищем решение, как я могу зарегистрировать все новые типы внутри App.conf? Возможно ли это?C# Unity IOC регистрирует новые типы в 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>()); 
    } 

ответ

1

Можно зарегистрировать типы внутри 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 (класс TheLogger зарегистрирован в качестве реализации 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.

+0

Спасибо, я обещаю мою проблему. – Ivan