/// <summary> /// 更新集合 /// </summary> public static void UpdateAssembly() { VisionFrameAssemblys.Clear(); //遍历目录 if (Directory.Exists(VisionFrameDllRootPath)) { var directoryInfo = new DirectoryInfo(VisionFrameDllRootPath); foreach (var item in directoryInfo.GetDirectories()) { //获取集合 var dllPath = $"{VisionFrameDllRootPath}/{item.Name}/{item.Name}.dll"; if (File.Exists(dllPath)) { var assembly = Assembly.LoadFrom(dllPath); EVisionFrameType visionFrameType = ConvertToEVisionFrameType(item.Name); if (visionFrameType == EVisionFrameType.Unknown) { continue; } //将dll添加到集合字典中 VisionFrameAssemblys.Add(visionFrameType, assembly); } } } }
/// <summary> /// 创建视觉框架实例 /// </summary> /// <param name="visionFrameType">视觉框架类型</param> /// <returns>视觉框架实例</returns> public static IVisionFrame CreateInstance(EVisionFrameType visionFrameType) { try { if (VisionFrameAssemblys.ContainsKey(visionFrameType)) { //创建视觉框架实例 foreach (var item in VisionFrameAssemblys[visionFrameType].ExportedTypes) { if (item.Name == "VisionFrame") { object obj = VisionFrameAssemblys[visionFrameType].CreateInstance(item.FullName); if (obj is IVisionFrame) { return(obj as IVisionFrame); } } } } throw new FileNotFoundException($"{nameof(visionFrameType)} is not found"); } catch (Exception) { throw; } }