2016-03-03 81 views
0

我有很多類,像這樣public class GetA:IGetA{}public class GetB:IGetB{}等等等等都在一個特定的命名空間我怎麼可以注入一個字符串轉換成我的班,統一

我的代碼,像這樣

container.RegisterTypes(
      AllClasses.FromLoadedAssemblies().Where(
       t => t.Namespace == "Getters"), 
      WithMappings.FromMatchingInterface, 
      WithName.Default, 
      WithLifetime.ContainerControlled); 
塊進行註冊

這工作得很好。我現在不得不向他們介紹某個字符串的依賴關係。

public class GetA:IGetA 
{ 
    public GetA(string separator){} 
} 

分隔符對所有需要它的類都是一樣的。我最好如何注入這種依賴關係?

我應該注入一個工廠類嗎?這似乎比我想要的更復雜!

+0

你在哪裏解決你的課程? –

+0

獲取者是注入到使用它們的其他類中的構造函數。決議是由統一魔法完成的。 – Loofer

+0

根對象在哪裏解決? –

回答

0

這可能是一個恐怖的場景,但是這是我做了什麼......

我已經作出了吸氣類取決於Func<string>

public class GetA : IGetA 
{ 
    private readonly string separator; 

    public GetA(Func<string> separator){ 
    this.separator = separator(); 
    } 
} 

然後在我UnityConfig.cs我已經把

 container.RegisterType<Func<string>>(
      new InjectionFactory(f => new Func<string>(() => "The separator... really it comes from a database call though") 
       )); 

在我的測試中,我可以做 new GetA (() => ", ");這可能看起來有點時髦,但讓我與數據庫cal分開我得到分隔符。

我對此並不滿意,因爲如果我想在其他地方使用Func<string>,我會踩到腳趾。也許我需要一個IGetSeperatorFactory,但我不想要一個!

相關問題