首先,这是配置代码。意思是说在Lily的宇宙中(每个人都有一个小宇宙,圣斗士。。。),她的Boy是tom,也就是我的眼中只有你。相应的在Lucy的眼中只有joy。
Tom tom
=
Void.GiveMe
<
Tom
>
();
Joy joy = Void.GiveMe < Joy > ();
Void.UniverseOf < Lily > ().Exist(tom);
Void.UniverseOf < Lucy > ().Exist(joy);
Joy joy = Void.GiveMe < Joy > ();
Void.UniverseOf < Lily > ().Exist(tom);
Void.UniverseOf < Lucy > ().Exist(joy);
然后是创建两个女孩子的代码:
Lily lily
=
Void.GiveMe
<
Lily
>
();
lily.Kiss();
Lucy lucy = Void.GiveMe < Lucy > ();
lucy.Kiss();
lily.Kiss();
Lucy lucy = Void.GiveMe < Lucy > ();
lucy.Kiss();
运行这段代码就可以看到少儿不宜的场景了。。。:
Lily is kissing Tom
Lucy is kissing Joy
产生这样的结果的原因是:
public
abstract
class
Girl : God
{
public abstract string Name { get ; }
public void Kiss()
{
Boy boy = GiveMe < Boy > ();
Console.WriteLine( " {0} is kissing {1} " , Name, boy.Name);
}
}
{
public abstract string Name { get ; }
public void Kiss()
{
Boy boy = GiveMe < Boy > ();
Console.WriteLine( " {0} is kissing {1} " , Name, boy.Name);
}
}
Girl的男朋友从哪里来的?偷来的?抢来的?骗来的?。。。
GiveMe是哪里来的方法?它是上帝的安排啊:
public
abstract
class
God
{
protected abstract T GiveMe < T > ();
}
{
protected abstract T GiveMe < T > ();
}
旁白:其实本来没有神,每个人都是神。。。
上帝怎么实现GiveMe的呢?这就是Void关心的事情了。因为女孩子们是这么创建的:
Lily lily
=
Void.GiveMe
<
Lily
>
();
Lucy lucy = Void.GiveMe < Lucy > ();
Lucy lucy = Void.GiveMe < Lucy > ();
所以说,这根本就是一个圈。。。因为我要做的其实是完全废弃标准的new和构造函数,采用自己的方式来创建和初始化对象,所以我不把这个叫做某某框架,独立使用也没有价值,它其实是一种语言。这种语言在后面我会用来干一些fancy的事情,但是还没想好怎么弄。。。