シーン:
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 です、あなたが幸せになることを願っています!