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

関連する問題