PowerShell的依赖注入

前端之家收集整理的这篇文章主要介绍了PowerShell的依赖注入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在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");
    }
}

如果我添加一个默认构造函数,CmdLet可以被注册和使用,但没有默认的构造函数,它根本不可用。

我知道我可以使用服务定位器来检索我的依赖关系,但是我认为反模式不想这样做。

我希望PowerShell API有一些类似于WCF的ServiceHostFactory的“Factory”钩子,但是如果有的话,我找不到它。

每次在PowerShell中使用cmdlet时,都会从空构造函数创建cmdlet类的实例。你不能控制PowerShell会选择哪个构造函数,所以你不能以直截了当的方式来完成你所提出的建议(我真的很难想象你为什么要这样做)。所以这个问题的简单答案是否定的。

为了实现类似的效果,您可以创建一个看起来像一个cmdlet的接口(具有BeginProcessing / EndProcessing / ProcessRecord / StopProcessing),并用于在真正的代码上填充一堆是薄的包装器的cmdlet。 IMHO这将是一个过于复杂的方法

我真的不明白你为什么要这样做。你能解释一下这个情景吗?

猜你在找的设计模式相关文章