/// <summary>勤務シフトに対するメンバーのランクを設定する</summary>
        public virtual void  SetMemberRank(CPattern p, CMember m, int rank)
        {
            if (!p.IsAvailable(Date))
            {
                return;
            }
            PatternsMember pm = null;

            if (PatternToPatternsMember.ContainsKey(p))
            {
                pm = PatternToPatternsMember[p];
            }
            else
            {
                pm = new PatternsMember(this, p);
                PatternToPatternsMember[p] = pm;
            }
            pm.SetMember(rank, m);
        }
        /// <summary>勤務シフトのrank番目に好まれるメンバーを取得する</summary>
        public virtual CMember GetPatternsMember(CPattern p, int rank)
        {
            if (p == null)
            {
                // シフトがnullのとき
                return(null);
            }
            PatternsMember pm = null;

            if (PatternToPatternsMember.ContainsKey(p))
            {
                pm = PatternToPatternsMember[p];
            }
            else
            {
                pm = new PatternsMember(this, p);
                PatternToPatternsMember[p] = pm;
            }
            return(pm.GetMember(rank));
        }