ZENJECT. Создание объекта с подконтейнером с заранее неизвестным префабом

коллеги. Столкнулся с препятсвием на своём пути разработки. Если вкратце, мне нужно динамически создавать объекты со своими зависимостями, а этих объектов много, поэтому префабы нужно искать тоже динамически, в момент байндинга (то бишь в методе InstallBindings, через Resources). Вопрос очень простой, хотя такой случай я не нашёл в гайде по Zenject. Класс ниже представляет собой установщик этого объекта.

public class ObjectCardInstaller : Installer<ObjectCardInstaller>
    {
        readonly Type _bodyType;
        readonly Type _brainType;
        
        public ObjectCardInstaller(Type bodyType, Type brainType)
        {
            _bodyType = bodyType;
            _brainType = brainType;
        }
        
        public override void InstallBindings()
        {
            Container.BindInstance(Container.InstantiatePrefabResource("Mines/" + _bodyType.Name).transform).AsSingle();
            Container.BindInterfacesAndSelfTo(_bodyType).AsSingle();
            if(_brainType != null)
            {
                Container.Bind<CardBrain>().To(_brainType)
                    .AsSingle();
            }
        }
    }

Мне интересны две эти строки.

Container.BindInstance(Container.InstantiatePrefabResource("Mines/" + _bodyType.Name).transform).AsSingle();
Container.BindInterfacesAndSelfTo(_bodyType).AsSingle();

Правильно ли так делать? Во второй строке, я так понимаю, возникает ошибка: ZenjectException: Unable to resolve 'CardBody'. Object graph: Этот установщик связывается фабрикой (CardFactory) в подконтейнере. Фабрика обычная, PlaceholderFactory.

public class ArenaCardInstaller : MonoInstaller
    {
        public override void InstallBindings()
        {
            Container.BindFactory<Type, Type, CardBody, CardFactory>().FromSubContainerResolve()
                .ByInstaller<ObjectCardInstaller>()
                .AsSingle();
        }
    }

Хочется, конечно, в Game Object Context это всё залить, но я знаю, как это делать только с ByNewPrefabInstaller, а для этого нужен префаб, а префаба в ArenaCardInstaller нет. Помогите, пожалуйста, в Zenject только начиню с подконтейнерами работать


Ответы (0 шт):