.Net动态加载插件-反射

来源:互联网 发布:爆肚涮羊肉 知乎 编辑:程序博客网 时间:2024/05/22 13:12
/// <summary>        /// 动态加载插件        /// </summary>        void LoadPlugin()        {            string[] ps = Directory.GetFiles("Plugins");            IXCodePlugin ixp;            //获取插件接口的Type对象            Type tixp = typeof(IXCodePlugin);            foreach (string item in ps)            {                //加载某个程序集文件,得到Assembly对象                Assembly asm = Assembly.LoadFile(Path.GetFullPath(item));                //获取程序集中的所有公共类型                Type[] ts = asm.GetTypes();                foreach (Type t in ts)                {                    //判断程序集是否实现了IXCodePlugin接口                    if (tixp.IsAssignableFrom(t))                    {                        //将实现了接口的类型完成实例化,以方便调用                        ixp = (IXCodePlugin)Activator.CreateInstance(t);                        string type = ixp.Type().ToLower();                     }                }            }        }
总共分一下几步:
1.遍历存放插件的文件夹,
2.获取插件接口的Type对象,
3.获取程序集中的所有公共类型
4.判断是否实现了,插件的接口
5.实例化实现了插件接口的类得到对象
6.调用插件中的方法

0 0
原创粉丝点击