2016-08-20 22 views
1

我是新來dryioc所以原諒無知:)如何類庫使用dryioc容器從主應用程序

我想了解正確的做法是什麼下面,

創建控制檯應用程序,它創建dryioc容器的實例。在容器中註冊一個記錄器(如單身)。然後從類庫(單獨的項目)中實例化一個類以用於控制檯應用程序,並能夠從類庫中引用容器(主應用程序)以獲取記錄器的實例。因此,類庫將利用在控制檯應用程序中註冊的任何記錄器。

我不希望傳遞容器作爲類庫中構造函數的一部分。

感謝您的任何幫助。

回答

1

就像這樣。可能是真實的任何其他容器(或即使沒有容器):

namespace Core 
{ 
    public interface ILogger 
    { 
     void Log(string message); 
    } 
} 

namespace Lib 
{ 
    using Core; 

    public class Foo 
    { 
     readonly ILogger _logger; 
     public Foo(ILogger logger) 
     { 
      _logger = logger; 
     } 

     public void DoSomething() 
     { 
      _logger.Log("About to do something ..."); 
     } 
    } 
} 

namespace ConsoleApp 
{ 
    using System; 

    using Core; 
    using Lib; 

    using DryIoc; 

    public class ConsoleLogger : ILogger 
    { 
     public void Log(string message) 
     { 
      Console.WriteLine(message); 
     } 
    } 

    public class Program 
    { 
     public static void Main() 
     { 
      var c = new Container(); 

      c.Register<ILogger, ConsoleLogger>(Reuse.Singleton); 
      c.Register<Foo>(); 

      var foo = c.Resolve<Foo>(); 
      foo.DoSomething(); 
     } 
    } 
} 
+0

非常感謝:)我期待着得到更多熟悉dryioc – Del

+0

高興它幫助。請接受答案。 – dadhi

相關問題