¿Es posible utilizar Inyección de Dependencia (DI) con Windows PowerShell?Inyección de Dependencia con PowerShell
Mis experimentos iniciales sugieren que no lo es. Si intento usar Constructor Injection en un CmdLet, ni siquiera se registra. En otras palabras, esto no es posible:
[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");
}
}
Si añado un constructor por defecto, el cmdlet puede ser registrado y utilizado, pero sin el constructor por defecto, simplemente no es disponible.
Sé que podría utilizar un Service Locator para recuperar mis dependencias, pero considero que es un antipatrón así que no quiero ir por ese camino.
Hubiera esperado que la API de PowerShell tuviese algún tipo de gancho 'Factory' similar al ServiceHostFactory de WCF, pero si lo hay, no puedo encontrarlo.
Soy curioso también. –
Estoy teniendo dificultades para encontrar un buen caso de uso para esto. – yfeldblum
Estoy usando un localizador de servicios. :) –