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这将是一个过于复杂的方法。 我真的不明白你为什么要这样做。你能解释一下这个情景吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |