有没有一种直接的方法可以在Service Fabric .Net Actor中使用DI?

时间:2018-09-28 16:40:23

标签: .net dependency-injection service-fabric-actor

有没有一种直接的方法可以在Service Fabric .Net Actor中使用DI?诸如AddScoped << em> IRepo , Repo >()之类的东西都可以在Service Fabric状态服务中使用,允许我进行注入。 我需要为演员提供一个新的构造函数,使用 actorServiceFactory 不会这样做,因为我无法创建Repo对象,需要将其注入。

1 个答案:

答案 0 :(得分:0)

不能将具有依赖项(作为接口)的新ctor添加到Actor类,并将生成的Actor ctor调用到重载的ctor中,并将依赖项设置为null。在新的ctor中,如果将依赖项设置为null(通过Actor框架实例化Actor类),则可以将依赖项实例化为所需的任何具体类,如果它们未作为null传递(即,通过单元测试),则您可以只是使用它们。并将基本ctor调用链接到通过Actorservice和actorId的新的重载ctor。

类似这样的东西:

//generated ctor
public ActorX(
            ActorService actorService,
            ActorId actorId) : this(actorService, actorId, null, null)
        {
        }

//Your overloaded ctor with additional dependencies
        public ActorX(
            ActorService actorService,
            ActorId actorId,
            IDependencyX dependencyX,
            IDependencyY dependencyY) : base(actorService, actorId)
{
 if (dependencyX == null)
{
instantiate dependencyX
}
 if (dependencyY == null)
{
instantiate dependencyY
}
}