.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);
我一直在使用 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);