|
//===========================================
// MVC# Framework | www.MVCSharp.org |
// ------------------------------------------
// Copyright (C) 2008 www.MVCSharp.org |
// All rights reserved. |
//===========================================
using System;
using System.Text;
using MVCSharp.Core.Views;
using MVCSharp.Core.Tasks;
namespace MVCSharp.Core
{
#region Documentation
/// <summary>
/// All controller classes should implement this interface.
/// In practice it is more handy to inherit from <see cref="ControllerBase"/>
/// class than to manually implement IController members.
/// </summary>
#endregion
public interface IController
{
#region Documentation
/// <summary>
/// Links controller to its context <see cref="ITask"/> object. The
/// framework takes care of setting this property, so that every controller
/// can access its task (see the example at the bottom).
/// </summary>
/// <remarks>
/// The setter method of the Task property is often used
/// to do the necessary controller initialization:
/// <code>
/// class MyController : ControllerBase
/// {
/// public override ITask Task
/// {
/// get { return base.Task; }
/// set
/// {
/// base.Task = value;
/// // Do controller initialization
/// }
/// }
/// }
/// </code>
/// </remarks>
/// <example>
/// Here we access the task state from the controller:
/// <code>
/// class MyController : ControllerBase
/// {
/// public void DoSomething()
/// {
/// if ((Task as MyTask).Counter >= 5)
/// MessageBox.Show("You cannot do something more than five times.");
/// else
/// (Task as MyTask).Counter++;
/// }
/// }
/// </code>
/// </example>
#endregion
ITask Task
{
get;
set;
}
#region Documentation
/// <summary>
/// Links controller to its view. The framework takes care of setting
/// this property for every controller instance. Thus, in full
/// accordance to the Model-View-Presenter pattern, any controller
/// may access its view (see the example in the bottom).
/// </summary>
/// <remarks>
/// The setter method of the View property is often used
/// to do the necessary view initialization:
/// <code>
/// class MyController : ControllerBase
/// {
/// public override IView View
/// {
/// get { return base.View; }
/// set
/// {
/// base.View = value;
/// // Do view initialization
/// }
/// }
/// }
/// </code>
/// </remarks>
/// <example>
/// Here we access the view from the controller:
/// <code>
/// class MyController : ControllerBase
/// {
/// public void DoSomething()
/// {
/// if ((View as IMyView).InputValue < 0)
/// MessageBox.Show("The input value should be not negative.");
/// else
/// (View as IMyView).OutputValue = Math.Sqrt((View as IMyView).InputValue);
/// }
/// }
/// </code>
/// </example>
#endregion
IView View
{
get;
set;
}
}
}
|
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.