C#之MEF

最近在研究MEF,我现在有一个需求,首先是要实现解耦,那么我每个动态库必须互相没有依赖。然后就是动态加载的问题。

以前研究过MEF的自动加载,但是,有一点不能满足我的需求,应为好像只能加载一个实例,我有时候需要加载多个实例。

还是老规矩先提需求,再研究解决方案。

1,能否创建多个实例?而且当有多个模块同时继承某个接口的时候,创建指定的模块多个实例?

 

目前就这一个需求吧。

https://www.cnblogs.com/yunfeifei/p/3991330.html

 

通过几天的思考,基本上有了思路了。

我是这么计划的:

写一个类,暴露一个接口,然后通过这个接口创建多个类,就可以实现多个实例了。

方法如下:

导出模块A

    [Export("A_Module",typeof(Interface_A))]
    [PartCreationPolicy(CreationPolicy.Shared)]
    public class A_Module:Interface_A
    {
        AControl_View m_AControl_View = null;
        public UserControl GetAView()
        {
            if(null != m_AControl_View)
            {
                return m_AControl_View;
            }
            m_AControl_View = new AControl_View();
            return m_AControl_View;
        }
    }

 导入模块A

 [Import("A_Module")]
        public Interface_A AModule { get; set; }

然后通过导入的实例,可以创建多个实例

string szRootPath = AppDomain.CurrentDomain.BaseDirectory;
            var  _catalog = new DirectoryCatalog(szRootPath);
            var _container = new CompositionContainer(_catalog);
            _container.ComposeParts(this);

            if(null != AModule)
            {
                var view = AModule.GetAView();
                Grid grid = new Grid();
                grid.Children.Add(view);

                WorkArea.Children.Add(grid);
            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于“c”的问题,需要进一步明确问题的具体内容。在数学中,“c”可能代表一些常数或系数,例如在一元一次方程中,c通常代表常数项;在求导中,c则代表常数函数的导数为零;在复数中,c则常用于表示实部。 在计算机领域中,C语言是一种广泛使用的编程语言,它具有高效、可移植、简洁等特点,成为了操作系统、网络、嵌入式系统等方面的主流开发语言。同时,“c”也是C语言代码中的一个标记符号,通常用于表示变量或函数名。 除此之外,在其他领域中,“c”也可能有不同的含义和用法。例如在物理学中,c代表光速常数;在化学中,c可能代表一种化合物的命名方式等。 综上所述,对于“c”的问题需要明确具体的语境和意义,才能准确回答。 ### 回答2: C是计算机科学中的一种编程语言,也是一种很常见的编程语言。它由美国贝尔实验室的丹尼斯·里奇在20世纪70年代初开发而成。 C语言具有简洁、高效的特点,被广泛应用于系统软件和应用软件开发中。C语言通过控制硬件资源和底层操作系统功能,提供了对计算机底层的直接访问能力,因此在开发操作系统、嵌入式系统和驱动程序等方面有着广泛的应用。 C语言的语法简洁明了,易于学习和理解。它具有结构化的特点,支持模块化的程序设计,程序可以分成多个独立的、可复用的模块,方便代码的维护和扩展。C语言还提供了丰富的库函数,开发者可以利用这些库函数快速实现各种功能。 C语言是编写高效代码的重要工具。由于C语言的语法和特性与机器语言非常接近,因此编写的程序在执行效率上非常高。C语言还可以直接调用汇编语言,利用汇编语言进行优化,进一步提高了程序的性能。 总之,C语言是一种重要的编程语言,广泛应用于计算机科学领域。其简洁、高效、灵活的特点使得它成为开发各种软件和系统的首选语言之一。对于想要从事编程领域的人来说,掌握C语言是一个重要的基础,可以帮助他们理解底层原理,提高程序的执行效率,实现各种功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值