CompositionContainer学习

Markdown博文大赛清新开启天天爱答题 一大波C币袭来寻找Java大牛!一次拿下软考,,我自有锦囊妙计!

CompositionContainer学习

分类:C#

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{using System.ComponentModel.Composition;using System.ComponentModel.Composition.Hosting;using System.Reflection;public interface IBookService{string BookName { get; set; }string GetBookName();}#region//[Export(typeof(IBookService))] //将类声明导出为IBookService接口类型//[Export("契约名")] //默认的导出类型是object类型[Export("MusicBook", typeof(IBookService))] //契约名public class MusicBook : IBookService{public string BookName { get; set; }public string GetBookName(){return "MusicBook";}}[Export("MusicBook", typeof(IBookService))]public class MathBook : IBookService{public string BookName { get; set; }public string GetBookName(){return "MathBook";}}[Export("MusicBook", typeof(IBookService))]public class HistoryBook : IBookService{public string BookName { get; set; }public string GetBookName(){return "HistoryBook";}}#endregionclass Program{//[Import]//[Import("MusicBook")] //使用[Import]导入刚刚导出的MusicBook[ImportMany("MusicBook")]public IEnumerable<IBookService> Service { get; set; }//public IBookService Service { get; set; }private void Compose(){var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());CompositionContainer container = new CompositionContainer(catalog);container.ComposeParts(this);}static void Main(string[] args){Program pro = new Program();pro.Compose();if (pro.Service != null){//Console.WriteLine(pro.Service.GetBookName());foreach (var s in pro.Service)Console.WriteLine(s.GetBookName());}Console.Read();}}}

上一篇C#性能优化之Lazy<T> 实现延迟初始化下一篇js与多行字符串

主题推荐猜你在找

查看评论

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

核心技术类目

与一个赏心悦目的人错肩,真真实实的活着,也就够了。

CompositionContainer学习

相关文章:

你感兴趣的文章:

标签云: