Có thể sử dụng Dependency Injection (DI) với Windows PowerShell không?Tiêm phụ thuộc với PowerShell
Các thử nghiệm tích cực của tôi cho thấy rằng không phải vậy. Nếu tôi cố gắng sử dụng Constructor Injection trong CmdLet nó thậm chí không tự đăng ký. Nói cách khác, điều này là không thể:
[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");
}
}
Nếu tôi thêm một constructor mặc định, lệnh có thể được đăng ký và sử dụng, nhưng không có constructor mặc định, nó chỉ đơn giản là không có sẵn.
Tôi biết tôi có thể sử dụng Dịch vụ định vị để truy xuất các phụ thuộc của tôi, nhưng tôi xem xét việc chống mẫu nên không muốn đi theo cách đó.
Tôi đã hy vọng rằng PowerShell API có một số loại móc 'Nhà máy' tương tự như ServiceFactory của WCF, nhưng nếu có, tôi không thể tìm thấy nó.
tôi tò mò là tốt. –
Tôi đang gặp khó khăn trong việc sử dụng tốt trường hợp này. – yfeldblum
Tôi đang sử dụng bộ định vị dịch vụ. :) –