private ObjectPool <IPoolable> GetOrCreatePool(Type type) { ObjectPool <IPoolable> pool; if (poolDict.ContainsKey(type)) { pool = poolDict[type]; } else { pool = new ObjectPool <IPoolable>(() => { return(CreateInstanceMethod(type)); }); poolDict.Add(type, pool); pool.DisposeInstanceMethod += (IPoolable instance) => { DisposeInstanceMethod?.Invoke(instance); }; pool.GetInstanceMethod += (IPoolable instance) => { GetInstanceMethod?.Invoke(instance); }; pool.ReturnInstanceMethod += (IPoolable instance) => { ReturnInstanceMethod?.Invoke(instance); }; } return(pool); }
public ToolStripMenuItem AddCheckableMenuItem(string text, Arg1Delegate <bool> OnClick = null) { ToolStripMenuItem item = null; item = new ToolStripMenuItem(text, null, (object sender, EventArgs e) => { item.Checked = !item.Checked; OnClick?.Invoke(item.Checked); }); Menu.Items.Add(item); return(item); }