浏览 4198 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-29
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(); 更多请参见项目主页 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-10
ContainerBound 明显引入了很多问题:
1. Susan是is a ContainerBound 还是has a ContainerBound,明显是后者,让一个class去继承一个toolkit,明显是个设计问题. 2. ContainerBound我看不是一个接口吧,这里的问题就自己想吧. |
|
返回顶楼 | |
发表时间:2007-05-10
ContainerBound确实不是接口,而是辅助类。
public class ContainerBound { protected T Get<T>() { return Containers.GetReadonlyContainerInContext(GetType()).Get<T>(); } } 愿意继承就继承,不愿意继承就自己手工把这个Get方法添加到类的定义中去。没有什么大问题。框架的侵入性,本来就是伪问题。 |
|
返回顶楼 | |
发表时间:2007-05-10
我只是实事求是的说而已,如果Susan和lucy要还继承Girl呢?
|
|
返回顶楼 | |
发表时间:2007-05-10
那就自己把这个方法添加进去好了。没有强制要求从ContainerBound继承的,只是一个方便的辅助类,简化API用的。
|
|
返回顶楼 | |
发表时间:2007-05-10
taowen 写道 那就自己把这个方法添加进去好了。没有强制要求从ContainerBound继承的,只是一个方便的辅助类,简化API用的。
所以我建议你修改例子,不然初一看会误解的。 |
|
返回顶楼 | |
发表时间:2007-05-10
谢谢你的建议,下次写例子会写清除一些。
|
|
返回顶楼 | |