using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HWDay5
{
class Program
{
static void Main(string[] args)
{
//定义玩具(在配置文件中)
string toyName = System.Configuration.ConfigurationManager.AppSettings["className"].ToString();
//定义玩具店
玩具店 toyStore = new 玩具店();
//通过玩具店买到玩具
玩具 aKindofToy = toyStore.出售玩具("HWDay5." + toyName);
//定义小孩子
小孩子 child = new 小孩子();
//把买回的玩具给小孩子玩耍
child.玩(aKindofToy);
}
}
abstract class 玩具 { }
class 坦克玩具 : 玩具 { }
class 毛毛熊玩具 : 玩具 { }
class 玩具店
{
//PPT中的参数名有意思, 莫非是暗示用反射?
internal 玩具 出售玩具(string 类型)
{
玩具 retVal = System.Reflection.Assembly.Load("HWDay5").CreateInstance(类型) as 玩具;
return retVal;
}
}
class 小孩子
{
public void 玩(玩具 toy)
{
Console.WriteLine("我在玩玩具。偷懒起见,产品基类玩具的ToString方法没有重写,大家将看到的是妈妈给我买的玩具的全名称(带namespace)我玩的是\r\n{0}", toy);
}
}
}