2

我正在使用單獨的核心類庫編寫Outlook加載項。我試圖使用一個Ioc容器(Autofac),但是我對於如何將Outlook會話註冊爲我的服務的依賴關係有點遺憾。使用依賴注入(IoC)的Outlook加載項

我是一個DI新手。

在我ThisAddIn.cs文件我實例化一個引導程序在我的類庫:

public override void BeginInit() 
{ 
    _core = new AddInBootstrapper(); 

    base.BeginInit(); 
} 

的AddInBootStrapper.cs類是我的核心類庫。它的構造看起來像這樣:

public AddInBootstrapper() 
    { 
     var containerBuilder = new ContainerBuilder(); 

     containerBuilder.RegisterType<OutlookService>().As<IOutlookService>(); 
     containerBuilder.RegisterType<EmailPrintService>().As<IPrintService<Microsoft.Office.Interop.Outlook.MailItem>>(); 

     _container = containerBuilder.Build(); 
    } 

我OutlookService類對Outlook會話的依賴(ThisAddIn.Application.Session):

public OutlookService(Microsoft.Office.Interop.Outlook.NameSpace session) 
    { 
     _session = session; 
    } 

我不知道如何在這樣組裝起來正確的方式。我是否簡單地通過構造函數將Session傳遞到Bootstrapper類中,然後將其連接起來,還是有其他更好的方法?

_core = new AddInBootstrapper(this.Application.Session); 
+0

我發現了一些可行的方法,但不確定是否理想。見下文 – raydenl 2012-07-19 01:19:22

回答

0

我已經結束了從ThisAddIn類傳遞會話到核心類庫,它工作正常。

public AddInBootstrapper(Microsoft.Office.Interop.Outlook.NameSpace session) 
    { 
     var containerBuilder = new ContainerBuilder(); 

     containerBuilder.Register(c => new OutlookService(session)).As<IOutlookService>(); 
     containerBuilder.RegisterType<EmailPrintService>().As<IPrintService<Microsoft.Office.Interop.Outlook.MailItem>>(); 

     _container = containerBuilder.Build(); 
    }