Caliburn笔记-依赖注入容器(wpf框架)

参考与此http://caliburn.codeplex.com/wikipage?title=Auto-Registering%20Components&referringTitle=Documentation

    此为基础,看了没用,不看不行…了解下注册流程.


注册组件,差不多离不开这几种模式

  1. 手动注册
  2. 元数据标签注册
  3. 外部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方法,使用第三方容器来注册服务,当然其内置也提供了一个较为简单的容器

新版本可能会更新,所以不去研究它了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Caliburn.Micro是一个轻量级的MVVM框架,用于WPF和Silverlight应用程序的开发。下面是一些使用Caliburn.Micro框架的开源WPF应用程序: 1. GitHub客户端 - GitHub官方提供的开源GitHub客户端,使用了Caliburn.Micro框架来实现MVVM架构和依赖注入。该应用程序支持浏览和管理GitHub上的存储库,还提供了用于代码编辑和管理的工具。GitHub客户端的源代码可在GitHub上找到。 2. Grep.Net - Grep.Net是一个基于正则表达式的文本搜索实用程序,使用Caliburn.Micro框架来实现MVVM架构。该应用程序支持多个搜索结果窗口、搜索结果的快速导航和自定义文本查找。Grep.Net的源代码可在GitHub上找到。 3. CodeHub - CodeHub是一个开源的GitHub移动应用程序,使用Caliburn.Micro框架来实现MVVM架构。该应用程序支持浏览GitHub上的存储库、查看问题和拉取请求、查看和编辑代码等功能。CodeHub的源代码可在GitHub上找到。 4. OpenLiveWriter - OpenLiveWriter是一个开源的桌面博客编辑器,使用Caliburn.Micro框架来实现MVVM架构。该应用程序支持编辑和发布博客文章、管理博客账户等功能。OpenLiveWriter的源代码可在GitHub上找到。 5. MiniBlog - MiniBlog是一个开源的微博客户端,使用Caliburn.Micro框架来实现MVVM架构。该应用程序支持浏览和发布微博、查看评论等功能。MiniBlog的源代码可在GitHub上找到。 这些开源项目展示了Caliburn.Micro框架WPF应用程序中的灵活性和可扩展性。如果您想学习如何使用Caliburn.Micro框架来构建WPF应用程序,可以通过查看这些项目的源代码来了解更多。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值