2016-03-03 62 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,但我不想要一个!

相关问题