private static IEnumerable<Type> GetImplementationsOfInterface(Assembly assembly, Type interfaceType)
 {
     return assembly.GetTypesSafe().Where(t =>
         !t.IsInterface &&
         !t.IsAbstract &&
         interfaceType.IsAssignableFrom(t) &&
         t.GetConstructors(BindingFlags.Public | BindingFlags.Instance)
             .Any(type => type.GetParameters().Select(p => p.ParameterType).All(p => (p.IsInterface || p.IsClass) && p != typeof(string))));
 }
 private static IEnumerable<Type> GetInterfaces(Assembly assembly)
 {
     return assembly.GetTypesSafe().Where(t => t.IsInterface);
 }