Ist es möglich, Dependency Injection (DI) mit Windows PowerShell zu verwenden?Abhängigkeitsinjektion mit PowerShell
Meine anfänglichen Experimente deuten darauf hin, dass es nicht ist. Wenn ich versuche, Constructor Injection in einem CmdLet zu verwenden, registriert es sich nicht einmal selbst. Mit anderen Worten, ist dies nicht möglich:
[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");
}
}
Wenn ich einen Standard-Konstruktor hinzufügen, können die CmdLet registriert und verwendet werden, aber ohne den Standard-Konstruktor, es ist einfach nicht vorhanden.
Ich weiß, ich könnte einen Service Locator verwenden, um meine Abhängigkeiten abzurufen, aber ich denke, dass ein Anti-Muster so nicht so gehen möchte.
Ich hätte gehofft, dass die PowerShell-API eine Art "Factory" -Knopf hätte, der WCFs ServiceHostFactory ähnelt, aber wenn, dann kann ich sie nicht finden.
Ich bin auch neugierig. –
Es fällt mir schwer, einen guten Anwendungsfall dafür zu finden. – yfeldblum
Ich benutze einen Service Locator. :) –