0

我有这个构造函数:

public GroupController(IUserService userService, IGroupService groupService)
{
    _groupService = groupService;
    _userService = userService;
}

userService 和 groupService 在构造函数中具有相同的对象:

public UserService(IDb db)
{
     _db = db;
}

public GroupService(IDb db)
{
     _db = db;
}

我的容器是这样的:

ObjectFactory.Initialize(x =>
{
    x.Scan(scan =>
    {
        scan.TheCallingAssembly();
        scan.WithDefaultConventions();
    });

    x.For<IDb>().Use<Db>();
    x.For<IUserService>().Use<UserService>();
    x.For<IGroupService>().Use<GroupService>();
});

那么,我如何为 UserService 注入一个 IDb,为 GroupService 注入另一个 IDb,因为我不能使用同一个实例。

4

1 回答 1

2

StructureMap 对象的默认生命周期是PerRequestLifecycle,这意味着在同一构建会话中对同一接口的多个请求将解析为单个实例。如果您希望它将每个接口请求解析为唯一的实例,您可以使用UniquePerRequestLifecycle.

TL;DRIDb :像这样配置你:

x.For<IDb>.AlwaysUnique().Use<Db>();
于 2013-03-29T16:38:38.070 回答