Mar*_*ann 25 powershell dependency-injection
是否可以在Windows PowerShell中使用依赖注入(DI)?
我的初步实验表明它不是.如果我尝试在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");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我添加一个默认构造函数,可以注册和使用CmdLet,但是没有默认构造函数,它根本就不可用.
我知道我可以使用服务定位器来检索我的依赖项,但我认为这是一种反模式,所以不想这样做.
我希望PowerShell API有一些类似于WCF的ServiceHostFactory的'Factory'钩子,但是如果有的话,我找不到它.
Sta*_*ing 10
每次在PowerShell中使用cmdlet时,都会从空构造函数创建cmdlet类的实例.您无法控制PowerShell将选择哪个构造函数,因此您无法以直接的方式执行您提出的建议(我真的很难想象您为什么要这样做).所以这个问题的简单答案是否定的.
为了实现类似的影响,您可以创建一个看起来像cmdlet的接口(具有BeginProcessing/EndProcessing/ProcessRecord/StopProcessing)并用于填充一堆cmtrats,这些cmdlet是真实代码上的瘦包装器.恕我直言,这将是一个过于复杂的方法.
我真的不明白你为什么要这样做.你能解释一下这个场景吗?
归档时间: |
|
查看次数: |
2475 次 |
最近记录: |