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 に答える