/// <summary> /// Performs actual registration of targets proeprties /// </summary> /// <param name="_MessageKey"></param> /// <param name="sender"></param> /// <param name="PropertyName"></param> /// <param name="PropertyType"></param> /// <param name="SendAsync"></param> private void RegisterProperty(string _MessageKey, object sender, string PropertyName, Type PropertyType, bool SendAsync) { MediatorHelper WeakPropertyReferance = new MediatorHelper(this, sender, PropertyName, PropertyType, _MessageKey, SendAsync); List <MediatorHelper> wr; lock (_registeredListners) { if (_registeredListners.TryGetValue(_MessageKey, out wr)) { if (wr.Count > 0) { MediatorHelper wa = wr[0]; if (wa.MessengerType != PropertyType) { throw new ArgumentException("Invalid key passed to RegisterProperty - existing property has incompatible parameter type"); } } wr.Add(WeakPropertyReferance); } else { wr = new List <MediatorHelper>(); wr.Add(WeakPropertyReferance); _registeredListners[_MessageKey] = wr; } } }
/// <summary> /// Performs unregistration from a property target /// </summary> /// <param name="_MessageKey"></param> /// <param name="sender"></param> /// <param name="PropertyName"></param> private void UnregisterProperty(string _MessageKey, object sender, string PropertyName) { lock (_registeredListners) { List <MediatorHelper> wr; if (_registeredListners.TryGetValue(_MessageKey, out wr)) { for (int i = wr.Count - 1; i >= 0; i--) { MediatorHelper wa = wr[i]; if (wa.IsProperty) { if (sender == wa.WeakBoundObject.Target && PropertyName == wa.PropertyName) { wr.RemoveAt(i); } } } if (wr.Count == 0) { _registeredListners.Remove(_MessageKey); } } } }
/// <summary> /// Performs the actual registration of a targets methods /// </summary> /// <param name="key">Key to store in dictionary</param> /// <param name="actionType">Delegate type</param> /// <param name="handler">Method</param> private void RegisterHandler(string key, Type actionType, Delegate handler) { var action = new MediatorHelper(handler.Target, actionType, handler.Method); lock (_registeredListners) { List <MediatorHelper> wr; if (_registeredListners.TryGetValue(key, out wr)) { if (wr.Count > 0) { // Check that all types are the same MediatorHelper wa = wr[0]; if (wa.MessengerType != actionType.GenericTypeArguments[0]) { throw new ArgumentException("Invalid key passed to RegisterHandler - existing handler has incompatible parameter type"); } } wr.Add(action); } else { wr = new List <MediatorHelper> { action }; _registeredListners.Add(key, wr); } } }
protected void btnSend_Click(object sender, EventArgs e) { MediatorHelper.Instance().ChatRoom.SendMessage(CurrentUser, txtMessage.Text); txtMessage.Text = string.Empty; GetChatMessages(); GetChatRoomUser(); }
protected void btnLogin_Click(object sender, EventArgs e) { Contact mySelf = new Contact(txtLogin.Text); MediatorHelper.Instance().ChatRoom.Register(mySelf); Session["User"] = mySelf; Response.Redirect("ChatRoom.aspx"); }
private void GetChatMessages() { messageField.Items.Clear(); foreach (var message in MediatorHelper.Instance().ChatRoom.UserMessage) { messageField.Items.Add(message); } }
private void GetChatRoomUser() { contactList.Items.Clear(); foreach (KeyValuePair <string, Colleague> item in MediatorHelper.Instance().ChatRoom._user) { contactList.Items.Add(item.Key); } }
private void button1_Click(object sender, EventArgs e) { Contact mySelf = new Contact(textBox1.Text); MediatorHelper.Instance().ChatRoom.Register(mySelf); contactForm contactListForm = new contactForm(textBox1.Text); this.Visible = false; contactListForm.ShowDialog(); this.Close(); }
private void InitializeMediator() { contactList.DisplayMember = "Name"; contactList.ValueMember = ""; contactList.DataSource = MediatorHelper.Instance().ChatRoom._user.Where(i => i.Key != myName).ToList(); }