C#插件技术基础

从原理上很简单,先定义统一接口,主程序根据预定义的接口加载DLL,示例代码

public static int Test()
        {
            try
            {
                System.IO.FileInfo fi = new System.IO.FileInfo("noock.demo.plugins.dll");     //   加载插件库
                System.Console.WriteLine("Loading file:{0}", fi.FullName);
                System.Reflection.Assembly plugin = System.Reflection.Assembly.LoadFile(fi.FullName);

                string[] names = { "noock.demo.plugins.HelloMessager", "noock.demo.plugins.ByeMessager" };    // 示例插件
                foreach (string className in names)
                {
                    System.Type ta = plugin.GetType(className, true);
                    Object oa = Activator.CreateInstance(ta);          // 要求有一个不带参数的构造函数,如果需要参数也可以使用其它的重载函数
                    if (!(oa is IMessager))    // IMessager为统一接口
                        throw new Exception(string.Format("Not a class type implemented interface IMessager"));
                    IMessager ia = oa as IMessager;
                    MessageBox.Show(ia.GetMessage());
                }
            }catch(Exception ex){
                MessageBox.Show(String.Format("Plug-in test failed:{0}/r/n{1}", ex.Message, ex.StackTrace));
                return -1;
            }
            return 0;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值