C# 使用Autofac注册IReliableStateManagerReplica
我有状态服务结构服务,它具有以下构造函数C# 使用Autofac注册IReliableStateManagerReplica,c#,autofac,azure-service-fabric,service-fabric-stateful,C#,Autofac,Azure Service Fabric,Service Fabric Stateful,我有状态服务结构服务,它具有以下构造函数 public StatefuleService(StatefulServiceContext context, IReliableStateManagerReplica manager, IActorProxyFactory actorProxyFactory = null) : base(context, manager) { ActorProxyFactory = actorProxyF
public StatefuleService(StatefulServiceContext context, IReliableStateManagerReplica manager,
IActorProxyFactory actorProxyFactory = null)
: base(context, manager)
{
ActorProxyFactory = actorProxyFactory ?? new ActorProxyFactory();
}
我正在使用Autofac注册组件。如何使用Autofac注册IReliableStateManagerReplica?
我试过了
builder.RegisterType<ReliableStateManager>().As<IReliableStateManagerReplica>().SingleInstance;
builder.RegisterType().As().SingleInstance;
但它给出了以下例外情况:
找不到具有的构造函数
类型上的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”
可以调用“Microsoft.ServiceFabric.Data.ReliableStateManager”
使用可用的服务和参数:无法解析参数
构造函数的“System.Fabric.StatefulServiceContext serviceContext”
'Void.ctor(System.Fabric.StatefulServiceContext,
Microsoft.ServiceFabric.Data.ReliableStateManagerConfiguration')
构造函数
StatefulService(StatefulServiceContext,IReliableStateManagerReplica)
的目的是使用非默认的可靠状态管理器副本初始化StatefulService类的新实例
这意味着您已经使用自定义逻辑实现了自己版本的可靠状态提供程序,并且不希望使用由服务结构实现的默认值
如果不是这种情况,则应使用默认构造函数StatefulService(statefulservicecoxt)
,如果需要访问StateManager,可以从((statefulservicecoxt)上下文)访问它。StateManager
我给您的另一个建议是,您不应该使用DI创建StatefulServiceContext,因为StatefulServiceContext是在运行时创建的,多个副本\分区可以在共享主机中重用同一进程,这意味着您可能有多个StatefulServiceContext,而DI不知道使用哪一个
请查看另一个,以便:
您能发布解决代码吗?您好,感谢您的推荐。但是,如果我想使用自定义构造函数而不是默认构造函数,如何使用Autofac注册IReliableStateManagerReplica?能做到吗?