Example #1
0
 public static void Refresh()
 {
     lock (s_syncRoot)
     {
         PreLoadPlugins();
         var listDescriptors = new List <BusDeviceDescriptor>();
         foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
         {
             try
             {
                 var refName = typeof(BusDeviceBase).Assembly.GetName().FullName;
                 var hasRef  = asm.GetName().FullName == refName ||
                               asm.GetReferencedAssemblies()
                               .Any(name => name.FullName == refName);
                 if (!hasRef)
                 {
                     // skip assemblies without reference on assembly which contains BusDeviceBase
                     continue;
                 }
                 foreach (var type in asm.GetTypes())
                 {
                     if (type.IsClass &&
                         !type.IsAbstract &&
                         typeof(BusDeviceBase).IsAssignableFrom(type))
                     {
                         try
                         {
                             BusDeviceBase device = (BusDeviceBase)Activator.CreateInstance(type);
                             var           bdd    = new BusDeviceDescriptor(
                                 type,
                                 device.Category,
                                 device.Name,
                                 device.Description);
                             listDescriptors.Add(bdd);
                         }
                         catch (Exception ex)
                         {
                             Logger.Error(ex, type.FullName);
                         }
                     }
                 }
             }
             catch (Exception ex)
             {
                 Logger.Error(ex, asm.FullName);
             }
         }
         s_descriptors = listDescriptors;
     }
 }
Example #2
0
 private static int DeviceNameComparison(
     BusDeviceDescriptor left,
     BusDeviceDescriptor right)
 {
     if (left == null && right == null)
     {
         return(0);
     }
     if (left != null && right != null)
     {
         return(left.Name.CompareTo(right.Name));
     }
     return(left == null ? -1 : 1);
 }