Caliburn笔记-依赖注入容器(wpf框架)
来源:互联网 发布:精选放心买淘宝达人 编辑:程序博客网 时间:2024/05/01 15:05
参考与此http://caliburn.codeplex.com/wikipage?title=Auto-Registering%20Components&referringTitle=Documentation
此为基础,看了没用,不看不行…了解下注册流程.
注册组件,差不多离不开这几种模式
- 手动注册
- 元数据标签注册
- 外部dll加载注册
1.内置服务则用手动注册.
2.挂元数据标签,如下
[PerRequest(typeof(IHomePresenter))]public class HomePresenter : Presenter, IHomePresenter{}
以前不是推荐此种做法的,标签会产生框架耦合,但框架用都用了,内置demo使用此方法最多,之前用的是手动注册,框架会去dll中寻找挂此标签的对象然后自动注册.
3.外部dll加载
重写CaliburnApplication的SelectAssemblies方法
protected override System.Reflection.Assembly[] SelectAssemblies(){ return new[] { Assembly.GetEntryAssembly(),typeof(Caliburn.WPF.ApplicationFramework.Bind).Assembly};}
private void InspectAssembly(Assembly assembly, ICollection<ComponentInfo> componentList, ICollection<Type> configs){ var types = assembly.GetExportedTypes(); foreach (var type in types) { foreach (var attribute in type.GetCustomAttributes(true).OfType<RegisterAttribute>()) componentList.Add(attribute.GetComponentInfo(type)); } foreach (var type in types) { if(_configType.IsAssignableFrom(type) && !type.IsAbstract) configs.Add(type); }}
总的来说,我们只要加载dll,挂上标签就可以自动注册了
内置服务+自定义服务注册好以后,接下来的任务就是注册实例.即组件的生命周期状况.内置都为Singleton
/// <summary>/// The lifetime of a Caliburn component./// </summary>public enum ComponentLifetime{ /// <summary> /// One instance per application. /// </summary> Singleton, /// <summary> /// A new instance is created on each request. /// </summary> PerRequest, /// <summary> /// A new instance is created per custom lifetime rules. /// </summary> Custom}
可以通过重写ConfigureWith方法,使用第三方容器来注册服务,当然其内置也提供了一个较为简单的容器
新版本可能会更新,所以不去研究它了
- Caliburn笔记-依赖注入容器(wpf框架)
- Caliburn笔记(1)(wpf框架)
- Caliburn笔记-Presenter(wpf框架)
- Caliburn笔记-消息触发器(wpf框架)
- Caliburn笔记-Action的创建(wpf框架)
- Caliburn笔记-Presenter的管理(wpf框架)
- Caliburn笔记-Dependent Action(wpf框架)
- Caliburn笔记-过滤器管理(IFilterManager)(wpf框架)
- Caliburn笔记-Action简写(wpf框架)
- Caliburn笔记-方法(IMethod)的创建(wpf框架)
- Caliburn笔记-元数据(Metadata)管理(wpf框架)
- Caliburn笔记-Presenter与View(视图策略)(wpf框架)
- Spring框架学习【IoC容器依赖注入】
- YII框架的依赖注入容器
- Yii框架依赖注入DI容器
- 依赖注入容器Autofac
- IOC容器注入依赖
- phalcon学习笔记--------依赖注入,容器IoC的理解
- wpf控件开发基础(2) -属性系统(1)
- MFC笔记(1)
- MFC笔记(2)菜单
- Caliburn笔记-Dependent Action(wpf框架)
- Caliburn笔记-过滤器管理(IFilterManager)(wpf框架)
- Caliburn笔记-依赖注入容器(wpf框架)
- Caliburn笔记-Action简写(wpf框架)
- 音量 迷笛 MIDI
- 如何了解和增加您网站的PageRank
- SQL2005 开发积累
- 中文编程是否可行之验证——(一)
- [转]从一个男人关注的事情上 可以看出他的修养和抱负
- 《WCF技术内幕》翻译39:第2部分_第7章_通道管理器:通道工厂和本章小结
- 《WCF技术内幕》翻译38:第2部分_第7章_通道管理器:通道侦听器