2017-04-24 56 views
0

在TinyIoC文檔我看到如何重寫autoregistrations南錫/ TinyIoC

默認TinyIoC將註冊具體類的多實例和接口註冊爲單身

測試與南希這種行爲,則如預期在下面的構造通過例如,單(因爲它解決了一個接口):

public class HelloModule : NancyModule 
{ 
    public HelloModule(IMyInterface mi) 
    { 
     ... 
    } 
} 

我想李可以爲此類型重寫此行爲,以便獲得每個請求實例。我看到的TinyIoC文檔中的其他地方

AutoRegister還可以與「正常」

因此,鑑於MyInterfaceImpl : IMyInterface,我說的Nancy.Bootstrapper.IRegistrations的實現,像這樣

public class Registrations : IRegistrations 
{ 
    public IEnumerable<TypeRegistration> TypeRegistrations 
    { 
     get 
     { 
      return new List<TypeRegistration>() 
      { 
       new TypeRegistration(typeof(IMyInterface), typeof(MyInterfaceImpl), Lifetime.PerRequest) 
      }; 
     } 
    } 

    public IEnumerable<CollectionTypeRegistration> CollectionTypeRegistrations { get; private set; } 
    public IEnumerable<InstanceRegistration> InstanceRegistrations { get; private set; } 
} 

,這似乎工作。

這是完成註冊覆蓋的可靠方法嗎?這個額外的註冊是否實際上刪除了現有的自動註冊?我想確保這種類型的註冊沒有多個註冊,並且由於註冊類型集合中的任意排序或其他可能會改變的內部結構,我的結果不僅僅是一個快樂事故。

回答

0

您應該可以通過在您的Nancy網站中添加自定義boostrapper並覆蓋ApplicationStartup方法來覆蓋TinyIocContainer。在這裏您可以修改容器並覆蓋默認註冊。