@@ -43,7 +43,7 @@ public static IEnumerable<IContentCheck> ContentCheckClasses
43
43
get
44
44
{
45
45
contentCheckClasses ??= InitCheckClasses < IContentCheck > ( ) ;
46
- return contentCheckClasses ?? Enumerable . Empty < IContentCheck > ( ) ;
46
+ return contentCheckClasses ?? [ ] ;
47
47
}
48
48
}
49
49
@@ -55,7 +55,7 @@ public static IEnumerable<ILinearExecutableCheck> LinearExecutableCheckClasses
55
55
get
56
56
{
57
57
linearExecutableCheckClasses ??= InitCheckClasses < ILinearExecutableCheck > ( ) ;
58
- return linearExecutableCheckClasses ?? Enumerable . Empty < ILinearExecutableCheck > ( ) ;
58
+ return linearExecutableCheckClasses ?? [ ] ;
59
59
}
60
60
}
61
61
@@ -67,7 +67,7 @@ public static IEnumerable<IMSDOSExecutableCheck> MSDOSExecutableCheckClasses
67
67
get
68
68
{
69
69
msdosExecutableCheckClasses ??= InitCheckClasses < IMSDOSExecutableCheck > ( ) ;
70
- return msdosExecutableCheckClasses ?? Enumerable . Empty < IMSDOSExecutableCheck > ( ) ;
70
+ return msdosExecutableCheckClasses ?? [ ] ;
71
71
}
72
72
}
73
73
@@ -79,7 +79,7 @@ public static IEnumerable<INewExecutableCheck> NewExecutableCheckClasses
79
79
get
80
80
{
81
81
newExecutableCheckClasses ??= InitCheckClasses < INewExecutableCheck > ( ) ;
82
- return newExecutableCheckClasses ?? Enumerable . Empty < INewExecutableCheck > ( ) ;
82
+ return newExecutableCheckClasses ?? [ ] ;
83
83
}
84
84
}
85
85
@@ -91,7 +91,7 @@ public static IEnumerable<IPortableExecutableCheck> PortableExecutableCheckClass
91
91
get
92
92
{
93
93
portableExecutableCheckClasses ??= InitCheckClasses < IPortableExecutableCheck > ( ) ;
94
- return portableExecutableCheckClasses ?? Enumerable . Empty < IPortableExecutableCheck > ( ) ;
94
+ return portableExecutableCheckClasses ?? [ ] ;
95
95
}
96
96
}
97
97
@@ -537,17 +537,29 @@ public ConcurrentDictionary<IPortableExecutableCheck, string> RunPortableExecuta
537
537
/// Initialize all implementations of a type
538
538
/// </summary>
539
539
private static IEnumerable < T > ? InitCheckClasses < T > ( ) =>
540
- InitCheckClasses < T > ( typeof ( Handler ) . Assembly ) ?? Enumerable . Empty < T > ( ) ;
540
+ InitCheckClasses < T > ( typeof ( Handler ) . Assembly ) ?? [ ] ;
541
541
542
542
/// <summary>
543
543
/// Initialize all implementations of a type
544
544
/// </summary>
545
545
private static IEnumerable < T > ? InitCheckClasses < T > ( Assembly assembly )
546
546
{
547
- return assembly . GetTypes ( ) ?
548
- . Where ( t => t . IsClass && t . GetInterface ( typeof ( T ) . Name ) != null ) ?
549
- . Select ( t => ( T ? ) Activator . CreateInstance ( t ) )
550
- . Cast < T > ( ) ?? [ ] ;
547
+ List < T ? > types = [ ] ;
548
+ try
549
+ {
550
+ foreach ( Type type in assembly . GetTypes ( ) )
551
+ {
552
+ if ( type . IsClass && type . GetInterface ( typeof ( T ) . Name ) != null )
553
+ {
554
+ var instance = ( T ? ) Activator . CreateInstance ( type ) ;
555
+ if ( instance != null )
556
+ types . Add ( instance ) ;
557
+ }
558
+ }
559
+ }
560
+ catch { }
561
+
562
+ return types ;
551
563
}
552
564
553
565
#endregion
0 commit comments