public void UpdateFrom(InstanceLookupBeginningMessage e) { if (e == null) { throw new ArgumentNullException("e"); } var instanceLookup = e.InstanceLookup; ResolveOperation resolveOperation; LifetimeScope activationScope; Component component; if (!_resolveOperations.TryGetItem(instanceLookup.ResolveOperationId, out resolveOperation) || !_lifetimeScopes.TryGetItem(instanceLookup.ActivationScopeId, out activationScope) || !_components.TryGetItem(instanceLookup.ComponentId, out component)) { throw new InvalidOperationException("Instance lookup depends on an unknown item."); } InstanceLookup item; if (resolveOperation.RootInstanceLookup == null) { item = new InstanceLookup(instanceLookup.Id, resolveOperation, activationScope, component); resolveOperation.RootInstanceLookup = item; resolveOperation.InstanceLookupStack.Push(item); } else { var top = resolveOperation.InstanceLookupStack.Peek(); item = new InstanceLookup(instanceLookup.Id, resolveOperation, activationScope, component, top); top.DependencyLookups.Add(item); resolveOperation.InstanceLookupStack.Push(item); } _instanceLookups.Add(item); }
static InstanceLookupViewModel BuildInstanceLookupTree(InstanceLookup instanceLookup) { return(new InstanceLookupViewModel( instanceLookup.Component.Description, Describe(instanceLookup.ActivationScope), !instanceLookup.SharedInstanceReused, instanceLookup.DependencyLookups.Select(BuildInstanceLookupTree))); }
public GameObject Get(string prefabName) { if (prefabName.IsNullOrEmpty()) { return(null); } InstanceLookup.TryGetValue(prefabName, out GameObject instance); return(instance); }
/// <summary> /// Resolve an lookup of the provided registration within the context. /// </summary> /// <param name="service">Service which is trying to be resolved</param> /// <param name="registration">The registration.</param> /// <param name="parameters">Parameters for the instance.</param> /// <returns> /// The component lookup. /// </returns> /// <exception cref="ComponentNotRegisteredException"/> /// <exception cref="Revenj.Extensibility.Autofac.Core.DependencyResolutionException"/> public IInstanceLookup ResolveLookup(Service service, IComponentRegistration registration, IEnumerable <Parameter> parameters) { if (registration == null) { throw new ArgumentNullException("registration"); } if (parameters == null) { throw new ArgumentNullException("parameters"); } InstanceLookup activation; var skipCache = parameters.Any(); var si = new ServiceInfo { Service = service, Registration = registration }; if (skipCache || !_serviceCache.TryGetValue(si, out activation)) { var scope = _currentResolutionScope; if (scope == null) { CheckNotDisposed(); } activation = new InstanceLookup(service, registration, scope, scope, parameters); if (!skipCache) { _serviceCache.TryAdd(si, activation); } } /*else if (registration.Sharing != InstanceSharing.Shared * && (activation.Preparing || activation.Activating) * && Thread.CurrentThread.ManagedThreadId == activation.ThreadID) * { * var dre = new DependencyResolutionException(CircularDependencyDetectorResources.CircularDependency); * dre.Lookups.Push(activation); * throw dre; * }*/ return(activation); }
public virtual void Remove(GameObject instance) { InstanceLookup.Remove(instance.name); Removed?.Invoke(instance); }