public static Type[] GetTypesImplementingInterface(Type interfaceType)
{
Argument.IsNotNull("interfaceType", interfaceType);
lock (_lockObject)
{
if (!_typesByInterface.ContainsKey(interfaceType))
{
_typesByInterface[interfaceType] = GetTypes(x =>
{
if (x == interfaceType)
{
return false;
}
return x.ImplementsInterfaceEx(interfaceType);
}).ToArray();
}
return _typesByInterface[interfaceType];
}
}