Beispiel #1
0
        /// <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);
                    }
                }
            }
        }
Beispiel #2
0
        /// <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;
            }
        }