1: using System;
     2: using System.Runtime.Remoting;
     3: using System.Collections;
     4: 
     5: [Serializable]
     6: public class SubmitEventArgs : EventArgs
     7: {
     8:     private string _string = null;
     9:     private string _alias = null;
    10:     
    11:     public SubmitEventArgs(string contribution, string contributor)
    12:     {
    13:         this._string = contribution;
    14:         this._alias = contributor;
    15:     }
    16:     
    17:     public string Contribution
    18:     {
    19:         get
    20:         {
    21:             return _string;
    22:         }
    23:     }
    24:     
    25:     public string Contributor
    26:     {
    27:         get
    28:         {
    29:             return _alias;
    30:         }
    31:     }
    32: }
    33: 
    34: public delegate void SubmissionEventHandler(object sender, SubmitEventArgs submitArgs);
    35: 
    36: public class ChatCoordinator : MarshalByRefObject
    37: {
    38:     public ChatCoordinator()
    39:     {
    40:         Console.WriteLine("ChatCoordinator created.  Instance: "+
    41:             this.GetHashCode().ToString());
    42:     }
    43:     
    44:     public override object InitializeLifetimeService()
    45:     {
    46:         return null;
    47:     }
    48:     
    49:     public event SubmissionEventHandler Submission;
    50:     
    51:     public void Submit(string contribution, string contributor)
    52:     {
    53:         Console.WriteLine("{0} sent: {1}.",contributor, contribution);
    54:         SubmitEventArgs e = new SubmitEventArgs(contribution, contributor);
    55:         
    56:         if(Submission != null)
    57:         {
    58:             Console.WriteLine("Broadcasting...");
    59:             Submission(this, e);
    60:         }
    61:     }
    62: }
    63: