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 только начиню с подконтейнерами работать