加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PowerShell的依赖注入

发布时间:2020-12-14 04:32:11 所属栏目:百科 来源:网络整理
导读:是否可以在Windows PowerShell中使用依赖注入(DI)? 我的初步实验表明它不是。如果我尝试在CmdLet中使用构造函数注入,它甚至不注册自身。换句话说,这是不可能的: [Cmdlet(VerbsDiagnostic.Test,"Ploeh")]public class PloehCmdlet : Cmdlet{ public Ploeh
是否可以在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这将是一个过于复杂的方法。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读