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; } }