Когда вы выбираете ILifetimeScope
из области видимости, он вернется сам, а не создаст дочернюю временную область.
Эта строка:
var childScoped = mtc.Resolve<ILifetimeScope>();
следует заменить на
var childScoped = mtc.BeginLifetimeScope();
Когда создается новый LifetimeScope, модуль для нескольких арендаторов устанавливает tenantId в область. В вашем примере вы должны «изменить» tenantId до создания дочернего LifetimeScope
tenantIdentifier.TenantId = "1";
var childScoped = mtc.BeginLifetimeScope();
В таком случае разрешенное значение IReader
будет тем, которое указано для арендатора.