二进制文件和源代码可以从这里下载到:
http://naive.container.googlepages.com/home

存在的意义:
最简单原始的组件装配

使用:
public class Susan : ContainerBound
    {
        public void FallInLove()
        {
            Console.WriteLine("Susan has fallen in love with " + Get<Boy>().Name);
        }
    }


public class Lily : ContainerBound
    {
        public void Kiss()
        {
            Console.WriteLine("Lily is kissing {0}", Get<Boy>().Name);
        }
    }


public class Lucy : ContainerBound
    {
        public void Marry()
        {
            Console.WriteLine("Lucy is marrying " + Get<Boy>().Name);
        }
    }


配置:
Containers.GetContainerInContext<object>().Put(new GenericBoy("Van"));

Containers.GetContainerInContext<Lucy>().Put(new GenericBoy("Tom"));

Containers.GetContainerInContext<Lily>().Put(new GenericBoy("Joy"));

Containers.Close();


更多请参见项目主页
评论
taowen 2007-05-10   回复
谢谢你的建议,下次写例子会写清除一些。
ray_linn 2007-05-10   回复
taowen 写道
那就自己把这个方法添加进去好了。没有强制要求从ContainerBound继承的,只是一个方便的辅助类,简化API用的。


所以我建议你修改例子,不然初一看会误解的。
taowen 2007-05-10   回复
那就自己把这个方法添加进去好了。没有强制要求从ContainerBound继承的,只是一个方便的辅助类,简化API用的。
ray_linn 2007-05-10   回复
我只是实事求是的说而已,如果Susan和lucy要还继承Girl呢?
taowen 2007-05-10   回复
ContainerBound确实不是接口,而是辅助类。

public class ContainerBound
    {
        protected T Get<T>()
        {
            return Containers.GetReadonlyContainerInContext(GetType()).Get<T>();
        }
    }

愿意继承就继承,不愿意继承就自己手工把这个Get方法添加到类的定义中去。没有什么大问题。框架的侵入性,本来就是伪问题。
ray_linn 2007-05-10   回复
ContainerBound 明显引入了很多问题:

1. Susan是is a ContainerBound 还是has a ContainerBound,明显是后者,让一个class去继承一个toolkit,明显是个设计问题.

2. ContainerBound我看不是一个接口吧,这里的问题就自己想吧.
发表评论

该博客是同时发布到论坛的,无法评论在论坛已被锁定的帖子

taowen
搜索本博客
最近访客
我的相册
C6038ae3-566b-4f0f-a7a4-4e96c192012b-thumb
step2
共 6 张
存档
最新评论