C# は、インターフェイスを実装する DLL 内のクラスを反映します。

シーン:

dll では、特定のドライバーのインターフェイスの開発を実現するために、
関連する実装クラスの dll ファイルのパスを構成できるため、リフレクション デカップリングによって dll をロードし、インターフェイスを実装するドライバーをインスタンス化できます。

実装手順

道:

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

要件: Dll ファイルの名前は、その中にインターフェイスを実装するクラスの名前と同じであるため、リフレクションがロードされると、 Rh.Iot.Driver.a driver.a 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);

完全なコードではなく、アイデアのみを提供してください!
私は Gouzi です、あなたが幸せになることを願っています!

おすすめ

転載: blog.csdn.net/weixin_38083655/article/details/125807074
おすすめ