Func injecting with Windsor container

后端 未结 3 1576
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-18 09:59

Here is a code excerpt from AspComet project that works with Autofac.

public MessageBus(IClientRepository clientRepository, Func me         


        
相关标签:
3条回答
  • 2020-12-18 10:24

    Castle.Windsor 2.5+ comes with delegate-based factories support which allows it to resolve a delegate for you without any explicit registration.

    0 讨论(0)
  • 2020-12-18 10:43
    container.Register(Component.For<Func<Foo>>().Instance(f));
    

    Here's a passing unit test that demonstrates the concept:

    [TestMethod]
    public void Test2()
    {
        Func<string> f = () => "Hello world";
    
        var container = new WindsorContainer();
        container.Register(Component.For<Func<string>>().Instance(f));
    
        var resolvedFunc = container.Resolve<Func<string>>();
    
        Assert.AreEqual("Hello world", f());
    }
    
    0 讨论(0)
  • 2020-12-18 10:43
    Container.Register(
      Component.For<IMessagesProcessor>()
               .ImplementedBy<MessagesProcessor>()
               .Lifetime.Transient,
      Component.For<Func<IMessagesProcessor>>()
               .Instance(() => Container.Resolve<IMessagesProcessor>())
    )
    

    That should do the trick

    0 讨论(0)
提交回复
热议问题