来自工厂方法的 Autofac 单例

Autofac singleton from factory method

我非常想寻找一个与 Castle Windsor 实现 here 的 Autofac 端口。 IBus 是 EasyNetQ 库提供的接口,我想注册一个将 IBus 实例实例化为单例的工厂。 BusBuilder.CreateMessageBus 是工厂方法。温莎城堡中的示例:

container.Register(
    Component.For<IBus>()
             .UsingFactoryMethod(BusBuilder.CreateMessageBus)
             .LifestyleSingleton()
    );

试试这个

container.Register(c => BusBuilder.CreateMessageBus())
         .As<IBus>()
         .SingleInstance(); 

container.RegisterInstance(BusBuilder.CreateMessageBus())
         .As<IBus>();

第二个解决方案将在 Autofac 配置期间创建 IBus 实例,而第二个解决方案将在 IBus 第一次被 Autofac 解析时创建它