مروری بر کاربردهای Action و Func - قسمت پنجم
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۰۶/۱۰ ۲۱:۴
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
using System;
namespace ActionFuncSamples
{
public enum Direction
{
Up,
Down,
Left,
Right
}
public class Sample5
{
public void Move(Direction direction)
{
switch (direction)
{
case Direction.Up:
MoveUp();
break;
case Direction.Down:
MoveDown();
break;
case Direction.Left:
MoveLeft();
break;
case Direction.Right:
MoveRight();
break;
}
}
private void MoveRight()
{
Console.WriteLine("MoveRight");
}
private void MoveLeft()
{
Console.WriteLine("MoveLeft");
}
private void MoveDown()
{
Console.WriteLine("MoveDown");
}
private void MoveUp()
{
Console.WriteLine("MoveUp");
}
}
}
public interface IMove
{
Dictionary<Direction, Action> MoveMap { get; }
}
public class Move : IMove
{
public Dictionary<Direction, Action> MoveMap
{
get
{
return new Dictionary<Direction, Action>
{
{ Direction.Up, MoveUp},
{ Direction.Down, MoveDown},
{ Direction.Left, MoveLeft},
{ Direction.Right, MoveRight}
};
}
}
private void MoveRight()
{
Console.WriteLine("MoveRight");
}
private void MoveLeft()
{
Console.WriteLine("MoveLeft");
}
private void MoveDown()
{
Console.WriteLine("MoveDown");
}
private void MoveUp()
{
Console.WriteLine("MoveUp");
}
}
public class Sample5
{
public void NewMove(IMove move, Direction dirction)
{
foreach (var item in move.MoveMap)
{
if (item.Key == dirction)
{
item.Value(); //run action
return;
}
}
}
// or ... move.MoveMap[dirction](); // or ... Action action; if(move.MoveMap.TryGetValue(dirction, out action)) action();