|
//===========================================
// MVC# Framework | www.MVCSharp.org |
// ------------------------------------------
// Copyright (C) 2008 www.MVCSharp.org |
// All rights reserved. |
//===========================================
using System;
using System.Text;
using System.Collections;
namespace MVCSharp.Core.Configuration.Tasks
{
#region Documentation
/// <summary>
/// Contains descriptions for all tasks. This collection is a part of
/// an MVC# application configuration (see <see cref="MVCConfiguration.TaskInfos">MVCConfiguration.TaskInfos</see>).
/// <para>This collection is enumerable to be able to walk through the
/// included task types.</para>
/// </summary>
/// <remarks>When a task is started the neccessary <see cref="TaskInfo"/> object is obtained
/// from the TaskInfoCollection object referenced by <see cref="MVCConfiguration"/>
/// object (see <see cref="MVCConfiguration.TaskInfos">MVCConfiguration.TaskInfos</see>). If not found a new
/// TaskInfo object is created with the help of
/// <see cref="MVCConfiguration.TaskInfoProvider">MVCConfiguration.TaskInfoProvider</see> object.</remarks>
/// <seealso cref="TaskInfo"/>
#endregion
public class TaskInfoCollection : IEnumerable
{
private Hashtable taskInfos = new Hashtable();
private MVCConfiguration mvcConfig;
#region Documentation
/// <summary>
/// Indexer for obtaining the <see cref="TaskInfo"/> object given a task type. If the needed
/// TaskInfo object does not exist yet the <see cref="MVCConfiguration.TaskInfoProvider">
/// MVCConfiguration.TaskInfoProvider</see> object is used to create it.
/// </summary>
#endregion
public TaskInfo this[Type taskType]
{
get
{
TaskInfo ti = taskInfos[taskType] as TaskInfo;
if (ti == null)
{
ti = mvcConfig.TaskInfoProvider.GetTaskInfo(taskType);
ti.ViewInfos = mvcConfig.ViewInfosByTask[taskType];
taskInfos[taskType] = ti;
}
return ti;
}
set { taskInfos[taskType] = value; }
}
#region Documentation
/// <summary>
/// Gets the total number of <c>TaskInfo</c> objects included.
/// </summary>
#endregion
public int Count
{
get { return taskInfos.Count; }
}
#region Documentation
/// <summary>
/// Provides an association to the MVCConfiguration object.
/// Neccessary for accessing the
/// <see cref="MVCConfiguration.TaskInfoProvider"/> instance.</summary>
#endregion
public MVCConfiguration MVCConfig
{
get { return mvcConfig; }
set { mvcConfig = value; }
}
#region Documentation
/// <summary>
/// Implementation of <see cref="IEnumerable.GetEnumerator"/> method.
/// Returns an enumerator to walk through the task types included
/// in this collection.
/// </summary>
#endregion
public IEnumerator GetEnumerator()
{
return taskInfos.Keys.GetEnumerator();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Oleg Zhukov, born and living in Russia is Lead Engineer and Project Manager in a company which provides business software solutions. He has graduated from Moscow Institute of Physics and Technology (MIPT) (department of system programming) and has got a M.S. degree in applied physics and mathematics. His research and development work concerns architectural patterns, domain-driven development and systems analysis. Being the adherent of agile methods he applies them extensively in the projects managed by him.