Привязка и внедрение экземпляра класса c# при создании префаба с монобихем, уже привязанным к Zenject - PullRequest
0 голосов
/ 17 марта 2020

У меня есть готовый сборник с монобезопасным поведением, который я хотел бы создать для экземпляра со всеми заполненными зависимостями монобихи поведения. Это монобиховое поведение, прикрепленное в префабе:

public class OnFreeRouteNodeClick : MonoBehaviour, IPointerClickHandler {

    private DiContainer _container;

    [Inject]
    private TMFreeRouteData _nodeData;
}

Я хочу разрешить зависимость TMFreeRouteData при создании экземпляра префаба, поэтому моя попытка с фабрикой Zenject приведена ниже:

public class FreeRouteNodeFactory : Factory<Vector3, TMFRNodeData> {
    DiContainer _container;
    Vector3 _pos;
    public FreeRouteNodeFactory (DiContainer container, Vector3 pos) {
        _container = container;
        _pos = pos;
    }

    //creates TMFRNodeData and instantiates node with dependencies filled
    public void spawnNode(){

        //Create TMFRNodeData logic
        TMFRNodeData = new TMFRNodeData (_pos) {
            //create instance of my data class
            //this is a serializable class that holds the position and other info
        }

        //Here I need to bind the instace of the create TMFRNodeData to have it available in the node.
        var prefab = _container.InstantiatePrefab(<ReferenceToPrefabWithOnFreeRouteNodeClickAttached>);
        prefab.transform.position = _pos;
    }
}

Мне нужен аргумент position (_pos) для создания класса TMFreeRouteData. Моя проблема в том, что я хотел бы создать экземпляр TMFreeRouteData, связать созданный экземпляр и передать его в закрытую переменную класса OnFreeRouteNodeClick с помощью инъекции. Я не знаю, является ли это хорошим подходом для включения этого в заводские логи c, но это просто установка сборных данных в экземпляре. Я знаю, что могу сначала создать экземпляр, а затем установить данные (в соответствии с принципами монобедийного поведения, не относящимися к конструкторам, и процессом создания объектов единства), но я хочу знать подход zenject к этой проблеме.

Надеюсь, я понял себя, большое спасибо заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...