using System;
/*一個非常精緻的類。
* 這是我所見過的最好的一段程式樣本。
* 非常短小,但是卻幾乎包含了一個類所能擁有的一切。
* 包括:委託、事件機制、介面、介面繼承,當然還有最不起眼的屬性和方法。
* 設計這個類的作者可謂獨具匠心,令人歎服。這也就是作者不俗之處。*/
namespace ObjectType
{
public delegate void ADelegate();
public interface IChanged
{
event ADelegate AnEvent;
}
public interface IPoint
{
int X {get; set;}
int Y {get; set;}
}
class Point:IPoint, IChanged
{
#region IPoint 成員
private int x;
public int X
{
get
{
// TODO: 添加 Point.X getter 實現
return this.x;
}
set
{
// TODO: 添加 Point.X setter 實現
this.x = value;
AnEvent();
}
}
private int y;
public int Y
{
get
{
// TODO: 添加 Point.Y getter 實現
return this.y;
}
set
{
// TODO: 添加 Point.Y setter 實現
this.y = value;
AnEvent();
}
}
#endregion
#region IChange 成員
public event ObjectType.ADelegate AnEvent;
#endregion
}
class EntryPoint
{
static void CallMe()
{
Console.WriteLine("I got called!");
}
[STAThread]
static void Main(string[] args)
{
Point p = new Point();
IChanged ic = p;
IPoint ip = p;
ic.AnEvent += new ADelegate(CallMe);
ip.X = 42;
ip.Y = 42;
Console.WriteLine("X: {0} Y: {0}", p.X, p.Y);
}
}
}