Exemple #1
0
        object GetWrappedComponent(object component)
        {
            if (component == null)
            {
                return(null);
            }

            lock (objectReferences_LOCK)
            {
                //cleanup on every request
                objectReferences.Where(kv => kv.Key.Target == null).Select(kv => objectReferences.Remove(kv));

                var key =
                    objectReferences.Keys.FirstOrDefault(k =>
                                                         k.Target == component &&
                                                         k.ForType == extensionType);

                object value;
                if (key == null)
                {
                    key   = new WeakReferenceForType(component, extensionType);
                    value = Activator.CreateInstance(extensionType);
                    objectReferences.Add(key, value);
                }
                else
                {
                    value = objectReferences[key] ?? Activator.CreateInstance(extensionType);
                }

                return(value);
            }
        }
        object GetWrappedComponent(object component)
        {
            if (component == null)
                return null;

            lock (objectReferences_LOCK)
            {
                //cleanup on every request
                objectReferences.Where(kv => kv.Key.Target == null).Select(kv => objectReferences.Remove(kv));

                var key =
                    objectReferences.Keys.FirstOrDefault(k =>
                                                    k.Target == component
                                                    && k.ForType == extensionType);

                object value;
                if (key == null)
                {
                    key = new WeakReferenceForType(component, extensionType);
                    value = Activator.CreateInstance(extensionType);
                    objectReferences.Add(key, value);
                }
                else
                {
                    value = objectReferences[key] ?? Activator.CreateInstance(extensionType);
                }

                return value;
            }
        }