创建对象有很多种方式,可以用工厂,可以用容器装配。所以不在乎再多一种啦。。。在C#上写了一种古怪的创建对象的方式,给大家kk。
首先,这是配置代码。意思是说在Lily的宇宙中(每个人都有一个小宇宙,圣斗士。。。),她的Boy是tom,也就是我的眼中只有你。相应的在Lucy的眼中只有joy。
然后是创建两个女孩子的代码:
运行这段代码就可以看到少儿不宜的场景了。。。:
Lily is kissing Tom
Lucy is kissing Joy
产生这样的结果的原因是:
Girl的男朋友从哪里来的?偷来的?抢来的?骗来的?。。。
GiveMe是哪里来的方法?它是上帝的安排啊:
旁白:其实本来没有神,每个人都是神。。。
上帝怎么实现GiveMe的呢?这就是Void关心的事情了。因为女孩子们是这么创建的:
所以说,这根本就是一个圈。。。因为我要做的其实是完全废弃标准的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);
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的事情,但是还没想好怎么弄。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架