Example #1
0
 void Start()
 {
     if (boundObjects == null)
     {
         boundObjects = GameObject.Find("Icons")
                        .GetComponent <BoundObjects>();
     }
 }
Example #2
0
        /// <summary>
        /// Dissolves and removes any bound objects.
        /// </summary>
        public void Dissolve()
        {
            if (BoundObjects != null)
            {
                for (int i = BoundObjects.Count - 1; i >= 0; i--)
                {
                    IDisposable disposable = BoundObjects[i] as IDisposable;

                    if (disposable != null)
                    {
                        disposable.Dispose();
                    }

                    BoundObjects[i] = null;
                    BoundObjects.RemoveAt(i);
                }
            }
        }
Example #3
0
        private object InternalResolve(IInjectContext injectContext)
        {
            object instance;

            BoundObjects = BoundObjects ?? new List <object>();

            switch (BindingType)
            {
            case BindingType.Singleton:
                if (BoundObjects.Count == 0)
                {
                    instance = ResolveNew(injectContext);
                    BoundObjects.Add(instance);

                    Container.Injector.Inject(instance, injectContext);

                    Resolved?.Invoke(true, this, null);
                }
                else
                {
                    instance = BoundObjects.FirstOrDefault();

                    Resolved?.Invoke(false, this, null);
                }
                break;

            case BindingType.Transient:
                instance = ResolveNew(injectContext);
                Container.Injector.Inject(instance, injectContext);

                Resolved?.Invoke(true, this, null);
                break;

            default:
                throw new InvalidOperationException();
            }

            return(instance);
        }