代码之家  ›  专栏  ›  技术社区  ›  Igor Brejc

温莎城堡:Resolve()参数的速记流畅界面?

  •  0
  • Igor Brejc  · 技术社区  · 15 年前

    container.Resolve<ConsoleApp>(Parameters.Add("args", args).Add("banana", X).Add...)
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   Mauricio Scheffer    15 年前

    还可以将匿名对象作为参数传递:

    container.Resolve<ConsoleApp>(new { args, banana = X });
    
        2
  •  1
  •   Igor Brejc    15 年前

    container.Resolve<ConsoleApp>(new Hashtable(){{"args", args}});
    
        3
  •  1
  •   Oleksii Kavka    3 年前

    到2021年,有一个更安全、更方便的API——Arguments类。

    您可以这样使用它:

    var arguments = new Arguments
    {
        { "args", args },
        { "banana", X },
        { typeof(IService), new MyService() }
    };
    
    container.Resolve<ConsoleApp>(arguments);
    

    还有Fluent API:

    var arguments = new Arguments()
        .AddNamed("args", args)
        .AddTyped<IService>(new MyService());
    
    container.Resolve<ConsoleApp>(arguments);
    

    https://github.com/castleproject/Windsor/blob/master/docs/arguments.md