某种原因,来自不同房间的治愈者正在被同一RoomHealing实例注册。这导致战友倒下时,没有正确分配治愈者。我的脑海中浮现了解决VContainer问题的方法,但我却被沮丧所困扰。 这个问题是如何产生的?我在调试过程中,通过状态,发现两个治愈者都注册在同一个对象上,而不是其他实例中。
以下是我的结构:
RoomUnits 和 RoomHealing 是 POCO,构造在 RoomContextScope 中:
protected override void Configure(IContainerBuilder builder)
{
builder.Register(resolver =>
{
var units = new RoomUnits();
ToPrivateScope(resolver).Inject(units);
return units;
}, Lifetime.Singleton);
builder.Register(resolver =>
{
var healing = new RoomHealing();
ToPrivateScope(resolver).Inject(healing);
return healing;
}, Lifetime.Singleton);
builder.RegisterBuildCallback(resolver =>
{
resolver.Resolve<RoomUnits>().Init();
resolver.Resolve<RoomHealing>().Init();
});
}
private IObjectResolver ToPrivateScope(IObjectResolver resolver) => resolver.CreateScope(builder =>
{
builder.RegisterInstance(gameObject);
builder.RegisterInstance(this).As<MonoBehaviour>();
});
评论 (0)