public virtual void ConsumeGameObject(GameObject obj) { myGameObject = obj; obj.SetActive(myVisible); OnInstanceCreated?.Invoke(obj); }
private object ResolveInternal(BindingData bindingData) { if (m_BindingDatasToBuild.Contains(bindingData)) { throw new InvalidOperationException("Cyclic dependencies are not supported."); } m_BindingDatasToBuild.Push(bindingData); var instanceType = bindingData.ImplType; if (!m_ServiceNameToSingletonMap.TryGetValue(bindingData.ServiceName, out object ret)) { ret = Activator.CreateInstance(instanceType); foreach (var property in instanceType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty)) { if (bindingData.PropertyInjections != null && bindingData.PropertyInjections.TryGetValue(property.Name, out var value)) { property.SetValue(ret, value); continue; } if (property.GetCustomAttribute <InjectAttribute>() == null) { continue; } var dependency = ResolveInternal((BindingData)GetBindingData(property.PropertyType)); property.SetValue(ret, dependency); } m_ServiceNameToSingletonMap[bindingData.ServiceName] = ret; m_ServicesToInit.Enqueue(bindingData.ServiceName); OnInstanceCreated?.Invoke(bindingData, ret); } m_BindingDatasToBuild.Pop(); return(ret); }