摘要: Mini 容器学习笔记1——环境搭建(基础篇)Mini 容器学习笔记2——组件元数据(基础篇)Mini 容器学习笔记3——组件的注册(基础篇)Mini 容器学习笔记4——组件的生命周期(应用篇)Mini 容器学习笔记5——组件的获取Mini 容器学习笔记6——组件的获取(应用)Mini 容器学习笔记7——构造函数注入Mini 容器学习笔记8——字段注入Mini 容器学习笔记9——属性注入Mini 容器学习笔记10——方法注入Mini 容器学习笔记11——Lazy注入Mini 容器学习笔记12——组合实例Mini 容器学习笔记13——插件注入Mini 容器学习笔记14——异常处理Mini 容器学 阅读全文
posted @ 2010-07-06 15:29 风云 阅读(2193) 评论(12) 推荐(2) 编辑
摘要: 组件工厂在创建组件时将通过一定的策略选定特定的构造函数,然后进行构造。构造函数的选择策略是:1. 如果遍历的构造函数如果含有参数,那么容器先检查创建上下文中是否含有指定的参数数组或命名参数字典,如果有则选择该构造函数,反之则遍历构造函数的参数,判断每一个参数是否可以进行注入,如果都可以进行注入则选择该构造函数2. 如果构造函数没有参数则选择该构造函数3. 将上面的两个步骤生成的构造函数列表进行按照构造函数参数的个数进行降序排列(构造函数的选择原则是参数越多将被首先选择) 4. 在步骤3的列表 中找出贴有InjectAttribute标签的构造函数,如果找到则选择该构造函数,如果找不到则选择步骤 阅读全文
posted @ 2010-07-06 15:16 风云 阅读(803) 评论(1) 推荐(1) 编辑
摘要: 1. 通过组件Id获取组件实例: [Test] public void GetByIdTest() { ServiceRegistry.Register<Person>("person"); var person = ServiceLocator.Get<IPerson>("person"); Assert.IsTrue(person != null); var person2 = ServiceLocator.Get<Person>("person"); Assert.IsTrue(person2 阅读全文
posted @ 2010-07-06 14:31 风云 阅读(627) 评论(1) 推荐(1) 编辑
摘要: Mini容器主要实现了两个接口,一个是服务注册表接口,一个是服务定位器接口。那么组件的获取就要依靠服务定位器接口IServiceLocator。 IServiceLocator接口的定义:public interface IServiceLocator : IServiceProvider,IDisposable{ object Get(string id); object Get(Type serviceType); object Get(string id, IDictionary<string, object> args); object Get(Type serviceTy 阅读全文
posted @ 2010-07-06 14:10 风云 阅读(790) 评论(1) 推荐(1) 编辑
摘要: Mini容器支持6中生命周期类型: 1. Singleton :单利类型(缺省组件都是单利类型的生命周期,由容器进行托管的) [Test] public void SingletonLifestyleTest() { ServiceRegistry.Register<Person>(); var person = ServiceLocator.Get<IPerson>(); Assert.IsTrue(person != null); var person2 = ServiceLocator.Get<IPerson>(); Assert.IsTrue(per 阅读全文
posted @ 2010-07-06 13:54 风云 阅读(819) 评论(1) 推荐(1) 编辑
摘要: 一. 环境下载到Mini 容器的官方网站下载NLite框架的二进制文件,下载并解压后就可以了。我们使用NLite框架需要用到下面的文件:NLite.dll(必要)二. 建立NLite应用程序 新建一个控制台应用程序 HostMini 添加NLite.dll 引用 添加命名空间:using NLite;using NLite.Mini; 在主函数中添加创建Mini容器的代码:var container = new Kernel(); 创建契约接口IMessageSender 创建组件EmailSender 通过服务注册表注册组件EmailSender 通过服务定位器获取契约接口 调用契约方法: 阅读全文
posted @ 2010-07-06 13:06 风云 阅读(2701) 评论(0) 推荐(4) 编辑
摘要: Mini容器主要实现了两个接口,一个是服务注册表接口,一个是服务定位器接口。那么组件的注册就要依靠服务注册表接口IServiceRegistry了。IServiceRegistry接口的定义: public interface IServiceRegistry { IServiceRegistry Register(IComponentInfo info);//通过组件元数据注册组件到容器中 IServiceRegistry RegisterInstance(string id, object instance);//注册实例 IServiceRegistry RegisterInstance 阅读全文
posted @ 2010-07-06 13:01 风云 阅读(977) 评论(0) 推荐(2) 编辑
摘要: 通过上一篇文章简单学习了,环境搭建,这一篇将学习Mini容器的组件注册API的使用方法。当组件注册后,系统都会自动创建一个组件元数据类IComponentInfo 来对该组件进行绑定,系统根据组件元数据进行组件创建,依赖注入,动态代理植入,组件查找定位等,组件元数据在DI容器中的地位是非常重要的。组件元数据定义了以下几个重要的成员:组件Id属性:通过该Id可以唯一标记一个组件,服务定位器可以通过组件Id获取组件实例,当注册组件时如果没有提供组件Id,系统会自动根据组件类型的全名自动生成ServiceRegistry.Register<Person>("person&quo 阅读全文
posted @ 2010-07-06 12:18 风云 阅读(1936) 评论(2) 推荐(2) 编辑
摘要: Mbs Framework 刚开始设计的时候仅仅是一个消息总线的Framework,该Framework已经有7年的历史上,用了很多的项目,这7年间经历了很多次重构,修改和完全重写,经受了项目的考验。今年7月份看了老赵的文章(适合C# Actor的消息执行方式 -中看不(3):中用的解决方案)有感就写了一篇文章回应老赵: 适合C# Actor的消息执行方式 -中看也中用的解决方案 和老赵在消息执行... 阅读全文
posted @ 2009-10-16 20:42 风云 阅读(2582) 评论(12) 推荐(1) 编辑
摘要: 今天粗粗看了老赵的文章适合C# Actor的消息执行方式 -中看不(3):中用的解决方案,我在想如果用我以前写的消息总线来实现那不是中看也中用了,于是顺手写了一个测试代码(具体内容参见适合C# Actor的消息执行方式 -中看不(3):中用的解决方案回复),说来很惭愧我的消息总线系列已经一年多没有更新了,我这人太懒散惯了,没办法。废话不多说了,下面我就具体讲解一下设计思路。  在Actor模式中,... 阅读全文
posted @ 2009-07-17 14:53 风云 阅读(2699) 评论(25) 推荐(2) 编辑