0

Jobというクラスがあり、 ;というプロパティSelectedItemを持つ別のクラスのオブジェクトをカプセル化します。DateTimeItemDate

class Job
{
    private SelectedItem m_SelectedItem = null;

    public Job() { }

    public SelectedItem Item
    {
        get { return m_SelectedItem; }
        set { m_SelectedItem = value; }
    }
}


class SelectedItem
{
    DateTime m_ItemDate = default(DateTime);

    public SelectedItem() { }

    public DateTime ItemDate
    {
        get 
        { 
            return (m_ItemDate == default(DateTime))
                ? DateTime.Now
                : m_ItemDate; 
        }
        set { m_ItemDate = value; }
    }
}

次に、ジョブのリストを持つJobManagerクラスがあります。JobQueue;

class JobManager
{
    private ICollection<Job> m_JobQueue = null;

    public JobManager() 
    {
        m_JobQueue = new List<Job>(); 
    }

    public ReadOnlyCollection<Job> JobQueue
    {
        get { return m_JobQueue.ToList().AsReadOnly(); }
    }

    private void CreateJob(SelectedItem item)
    {
        Job newJob = new Job();
        newJob.Item = item;
        m_JobQueue.Add(newJob);
    }

    public IList<Job> GetJobsFromQueue(int quantity, ICollection<Job> ignoreList)
    {
        return (from job in JobQueue
                select job).Skip(ignoreList.Count).Take(quantity).ToList();
    }

    public void CreateJobQueue(ICollection<SelectedItem> jobData)
    {
        for (long daysCount = 100; daysCount >= 1; daysCount--)
        {
            SelectedItem item = GetRandomItem(jobData.ToList()); //This just returns a random item from the specified jobData.
            item.ItemDate = DateTime.Today.AddDays((daysCount - 1));
            CreateJob(item);
        }
    }
}

ここで問題となるのは、メインルーチンからCreateJobQueue()を呼び出すと、daysCount値に応じて、ItemDateが将来のように正しく挿入され、JobQueueに完全に入力されることです。

ただし、GetJobsFromQueue()メソッドを呼び出して一連のジョブを取得しようとすると、JobQueue全体のItemDate値が台無しになります(つまり、挿入された値とは異なります)。

誰かが手がかりを得ることができますか?

4

0 に答える 0