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