/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="sender">The sending queue for this class</param>
        /// <param name="model">The PresenterModel for the network service</param>
        /// <param name="role">The StudentModel for this network service</param>
        public StudentNetworkService(SendingQueue sender, PresenterModel model, StudentModel role)
            : base(sender, role)
        {
            this.m_Student = role;
            this.m_Model = model;

            // Instanciate the submission status service
            submission_status_service_ = new SubmissionStatusNetworkService(this.Sender, role);

            // Create a delegate that will update the local copy of the current
            // presentation whenever it changes in the workspace.
            //
            // This causes the set{} accessor for CurrentPresentation to be run,
            // which as a side effect disposes of and recreates all the network
            // services associated with the student.
            this.m_PresentationChangedDispatcher =
                this.m_Model.Workspace.CurrentPresentation.ListenAndInitialize(sender,
                    delegate(Property<PresentationModel>.EventArgs args) {
                        if (args.New != null) {
                            this.CurrentPresentation = args.New;
                        }
                    });
        }
        protected override bool UpdateTarget(ReceiveContext context)
        {
            StudentModel role = this.Target as StudentModel;
            if(role == null)
                this.Target = role = new StudentModel(((Guid) this.TargetId));

            base.UpdateTarget(context);

            return true;
        }
 public StudentMessage(StudentModel role)
     : base(role)
 {
     // Currently StudentModel has no published properties.
 }