C# 反射某个实现接口的Dll里面的类

场景:

dll里面是为了实现某个驱动的接口进行开发的相关实现类
dll文件的路径可配置,那么可反射解耦加载该dll,实例化实现接口的驱动

实现步骤

路径:

C:\\hh\\Rh.Iot.RunConsole\\bin\\Debug\\net6.0\\DriverDll\\Rh.Iot.Driver.某个driver.dll

要求:Dll文件名和里面实现接口的类名一致
这样反射加载的时候就是 创建一个这样的对象
Rh.Iot.Driver.某个driver.某个driver

代码实现,只需要路径就可以反射一个驱动了,通过正则对自己的项目文件命名进行一定的处理
IDriver 是内部的一个接口

//加载dll文件
                Assembly asm = Assembly.LoadFile(DriverPath);

                //获取类
                //Type type = asm.GetType("RH.Iot.Business.EapBaseInfoHandler.GloryMes.GloryMesReciveCheckUserInfoFromMesHandler");
                string rules = @"Rh.Iot.Driver.\S{0,100}.dll";
                var m = Regex.Matches(DriverPath, rules);
                string result = string.Empty;
                if (m != null)
                {
    
    
                    string[] strs = m[0].Value.Split('.');
                    result = m[0].Value.Replace("dll", strs[3]);
                    //Console.WriteLine(result);
                }
                else
                {
    
    
                    return false;
                }
                Type type = asm.GetType(result);

                //创建该类型的实例
                IDriver obj = (IDriver)Activator.CreateInstance(type);

                //获取该类的方法
                //MethodInfo mf = type.GetMethod("InfoHandler");
                obj.Start(DriverParas);

只提供思路,不提供完整代码!
我是狗子,希望你幸福!

猜你喜欢

转载自blog.csdn.net/weixin_38083655/article/details/125807074
今日推荐