/// <summary>
        /// Create and dispatch a new local <see cref="MemberEventArgs"/>
        /// with the given type to the registered event handlers.
        /// </summary>
        /// <param name="eventType">
        /// The type of <b>MemberEventArgs</b> to create and dispatch.
        /// </param>
        protected virtual void DispatchMemberEvent(MemberEventType eventType)
        {
            MemberEventArgs evt = new MemberEventArgs(this, eventType, OperationalContext.LocalMember);

            switch (evt.EventType)
            {
            case MemberEventType.Joined:
                InvokeMemberEvent(MemberJoined, evt);
                break;

            case MemberEventType.Leaving:
                InvokeMemberEvent(MemberLeaving, evt);
                break;

            case MemberEventType.Left:
                InvokeMemberEvent(MemberLeft, evt);
                break;
            }
        }
 /// <summary>
 /// Constructs a new MemberEventArgs.
 /// </summary>
 /// <param name="source">
 /// The source object that fired the event (a
 /// <see cref="IService"/>).
 /// </param>
 /// <param name="eventType">
 /// This event's type.
 /// </param>
 /// <param name="member">
 /// The <see cref="IMember"/> for which the event applies.
 /// </param>
 public MemberEventArgs(IService source, MemberEventType eventType, IMember member)
 {
     m_source    = source;
     m_eventType = eventType;
     m_member    = member;
 }