• 在C# 2.0上写另外一种语言来创建对象


    创建对象有很多种方式,可以用工厂,可以用容器装配。所以不在乎再多一种啦。。。在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的事情,但是还没想好怎么弄。。。

  • 相关阅读:
    Visual Studio 2008中 在工具栏上添加"在文件中查找"
    WPF 获得文件夹路径/浏览文件夹路径
    WPF ListBox
    如何:创建和使用 C# DLL(C# 编程指南)
    (收藏)《博客园精华集》分类索引
    WPF 文件级资源(类似与使用CSS文件,然后引用CSS文件)
    [WPF/Silverlight]让INotifyPropertyChanged的实现更优雅一些
    WPF 动画
    WPF 鼠标移动到图片变大,移开还原,单击触发事件效果
    Regsvr32.exe 用法
  • 原文地址:https://www.cnblogs.com/taowen/p/730184.html
Copyright © 2020-2023  润新知