使用Windows PowerShell进行依赖注入(DI)有可能吗?使用PowerShell进行依赖注入
我的初步实验表明它不是。如果我尝试在CmdLet中使用构造函数注入,它甚至不会注册它自己。换句话说,这是不可能的:
[Cmdlet(VerbsDiagnostic.Test, "Ploeh")]
public class PloehCmdlet : Cmdlet
{
public PloehCmdlet(IFoo foo)
{
if (foo == null)
{
throw new ArgumentNullException("foo");
}
// save foo for later use
}
protected override void ProcessRecord()
{
this.WriteObject("Ploeh");
}
}
如果我添加一个默认的构造函数,该cmdlet可以注册和使用,但没有默认的构造函数,这是根本无法获得。
我知道我可以使用服务定位器来检索我的依赖关系,但我认为这是一种反模式,所以不想这样做。
我本来希望PowerShell的API有着某种“厂”钩类似WCF的ServiceHostFactory,但如果有,我无法找到它。
我想知道为好。 – 2009-12-22 18:07:30
我很难为此提供一个很好的用例。 – yfeldblum 2009-12-23 20:53:25
我正在使用服务定位器。 :) – 2010-09-12 21:18:53