.NET Core 2 中的 StructureMap 和 Proto.Actor

StructureMap and Proto.Actor in .NET Core 2

我一直在使用 Proto.Actor,特别是 ActorFactory 来生成演员。为了能够使用这些功能,我需要将 services.AddProtoActor() 添加到我的启动 class.

ConfigureServices 方法中

但是,现在我想过渡到使用 StructureMap 作为我的 IoC 容器,但是这两者似乎不能很好地结合在一起 - 当我从我在网上找到的指南中添加以下代码时:

public IServiceProvider ConfigureIoC(IServiceCollection services)
{
    // static class method that scans assemblies
    IContainer container = IocContainer.SetupContainer(); 
    container.Configure(config =>
    {
        config.Populate(services);
    });


    return container.GetInstance<IServiceProvider>();
}

当它尝试 运行 config.Populate 时,出现以下错误:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: EventStream must have at least one public constructor to be plugged in by StructureMap

有没有人知道如何在 StructureMap 中将 IActorFactory 正确创建为单例(或有解决方法)?

最后,使用 StructureMap 消除了我对 ActorFactory 本身的需求。所以我没有从工厂获取演员的 PID,而是有两行:

var props = Actor.FromProducer(() => container.GetInstance<MyActorType>());
var pid = Actor.Spawn(props);