/// <summary>
        /// 至少有当Receiver和Publisher都要求删除的时候。db中才会真正删除
        /// </summary>
        /// <param name="currentUser"></param>
        /// <param name="personalMessageDao"></param>
        public virtual void Delete(User currentUser, IPersonalMessageDao personalMessageDao)
        {
            if (currentUser == null)
            {
                throw new ArgumentNullException("currentUser");
            }
            if (personalMessageDao == null)
            {
                throw new ArgumentNullException("personalMessageDao");
            }
            if (Receiver.Id == currentUser.Id)
            {
                DeleteStatus |= PersonalMessageStatus.Receiver;
            }
            else
            {
                DeleteStatus |= PersonalMessageStatus.Publisher;
            }

            if (this.DeleteStatus.HasFlag(PersonalMessageStatus.Publisher) && this.DeleteStatus.HasFlag(PersonalMessageStatus.Receiver))
            {
                personalMessageDao.Delete(this);
            }
        }