在C# 2.0上写另外一种语言来创建对象
2007-04-27 18:31
218 查看
创建对象有很多种方式,可以用工厂,可以用容器装配。所以不在乎再多一种啦。。。在C#上写了一种古怪的创建对象的方式,给大家kk。
首先,这是配置代码。意思是说在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);
然后是创建两个女孩子的代码:
Lily lily = Void.GiveMe<Lily>();
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);
}
}
Girl的男朋友从哪里来的?偷来的?抢来的?骗来的?。。。
GiveMe是哪里来的方法?它是上帝的安排啊:
public abstract class God
{
protected abstract T GiveMe<T>();
}
旁白:其实本来没有神,每个人都是神。。。
上帝怎么实现GiveMe的呢?这就是Void关心的事情了。因为女孩子们是这么创建的:
Lily lily = Void.GiveMe<Lily>();
Lucy lucy = Void.GiveMe<Lucy>();
所以说,这根本就是一个圈。。。因为我要做的其实是完全废弃标准的new和构造函数,采用自己的方式来创建和初始化对象,所以我不把这个叫做某某框架,独立使用也没有价值,它其实是一种语言。这种语言在后面我会用来干一些fancy的事情,但是还没想好怎么弄。。。
首先,这是配置代码。意思是说在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);
然后是创建两个女孩子的代码:
Lily lily = Void.GiveMe<Lily>();
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);
}
}
Girl的男朋友从哪里来的?偷来的?抢来的?骗来的?。。。
GiveMe是哪里来的方法?它是上帝的安排啊:
public abstract class God
{
protected abstract T GiveMe<T>();
}
旁白:其实本来没有神,每个人都是神。。。
上帝怎么实现GiveMe的呢?这就是Void关心的事情了。因为女孩子们是这么创建的:
Lily lily = Void.GiveMe<Lily>();
Lucy lucy = Void.GiveMe<Lucy>();
所以说,这根本就是一个圈。。。因为我要做的其实是完全废弃标准的new和构造函数,采用自己的方式来创建和初始化对象,所以我不把这个叫做某某框架,独立使用也没有价值,它其实是一种语言。这种语言在后面我会用来干一些fancy的事情,但是还没想好怎么弄。。。
相关文章推荐
- 创建两个对象的两种方法,一中\new,另外一种不new
- 用Javascript创建对象的另外一种方法
- C#模拟js的Json对象创建,操作
- C#2.0语言规范(一)C#2.0简介
- C#语言学习之旅(2):C#对象和类型
- 剖析C# 2.0泛型类的创建和使用(三)
- asp.net 2.0教程 c#语言基础语句
- ulua里如何将C#创建的UnityEngine对象返回给lua
- 获取 ACE 主动对象方法返回值的另外一种方法
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)
- C# 2.0 版本语言规范
- python 7-7 如何在环状数据结构中管理内存,标准库中的weakref,创建一种能访问对象但不能增加引用计数的对象
- Java——一种彻底的面向对象语言
- 【黑马程序员】【OC语言】创建对象
- C#2.0锐利体验_杂项技术,以及C#语言的未来发展
- C#中客户端创建webservice的soapclient类对象实例时间过长
- C#2.0语言规范(五)不完全类型
- 根据类Student的定义,创建五个该类的对象,输出每个学生的信息, 计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
- C#特性与反射:从XML文件创建对象