委托和继承(转)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public delegate void BoiledEventHander(object sender,TemperEventArgs e);
public class TemperEventArgs:EventArgs
{
public readonly int temperature;
public TemperEventArgs(int temp)
{
this.temperature = temp;
}
}
public class Heater
{
private string factory;
private DateTime madeTime;
private TemperEventArgs temper;
public DateTime MadeTime
{
get
{
return madeTime;
}
set
{
madeTime = value;
}
}
public string Factory
{
get
{
return factory;
}
set
{
factory = value;
}
}
public event BoiledEventHander Boiled;
public void BoidWater()
{
for (int i = 0; i < 100; i++)
{
if (i >= 95)
{
TemperEventArgs e = new TemperEventArgs(i);
temper = e;
OnBoided();
}
}
}
public void OnBoided()
{
if (Boiled!=null)
{
Boiled(this,temper);
}
}
}
public class Alarm
{
public void MakeAlert(object sender, TemperEventArgs e)
{
Heater myheater = (Heater)sender;
Console.WriteLine("the factory is{0},made by{1},the temperature is{2}",myheater.Factory,myheater.MadeTime,e.temperature);
}
}
public class Display
{
static public void MakeDisplay(object sender, TemperEventArgs e)
{
Heater myheater = (Heater)sender;
Console.WriteLine("my{0}madeby{1}and the temperature is{2}",myheater.Factory,myheater.MadeTime,e.temperature);
}
}
class Program
{
static void Main(string[] args)
{
Heater myheater = new Heater();
Alarm myalarm = new Alarm();
myheater.Boiled += myalarm.MakeAlert;
myheater.Boiled += (new Alarm()).MakeAlert;
myheater.Boiled += Display.MakeDisplay;
myheater.BoidWater();
}
}
}