Catel.Reflection.TypeCache.ShouldIgnoreType C# (CSharp) Метод

ShouldIgnoreType() приватный статический Метод

Determines whether the specified type must be ignored by the type cache.
private static ShouldIgnoreType ( Assembly assembly, Type type ) : bool
assembly System.Reflection.Assembly The assembly.
type System.Type The type to check.
Результат bool
        private static bool ShouldIgnoreType(Assembly assembly, Type type)
        {
            if (type == null)
            {
                return true;
            }

            var typeName = type.FullName;

            // CTL-653
            if (string.IsNullOrEmpty(typeName))
            {
                // Some types don't have a name (for example, after obfuscation), let's ignore these
                return true;
            }

            // Ignore useless types
            if (typeName.Contains("<PrivateImplementationDetails>") ||
                typeName.Contains("+<") || // C# compiler generated classes
                typeName.Contains("+_Closure") || // VB.NET compiler generated classes
                typeName.Contains(".__") || // System.Runtime.CompilerServices.*
                typeName.Contains("Interop+") || // System.IO.FileSystem, System.Net.Sockets, etc
                typeName.Contains("c__DisplayClass") ||
                typeName.Contains("d__") ||
                typeName.Contains("f__AnonymousType") ||
                typeName.Contains("o__") ||
                typeName.Contains("__DynamicallyInvokableAttribute") ||
                typeName.Contains("ProcessedByFody") ||
                typeName.Contains("FXAssembly") ||
                typeName.Contains("ThisAssembly") ||
                typeName.Contains("AssemblyRef") ||
                typeName.Contains("MS.Internal") ||
                typeName.Contains("::") ||
                typeName.Contains("\\*") ||
                typeName.Contains("_extraBytes_") ||
                typeName.Contains("CppImplementationDetails"))
            {
                return true;
            }

            // Ignore types that might cause a security exception
            if (typeName.Contains("System.Data.Metadata.Edm.") ||
                typeName.Contains("System.Data.EntityModel.SchemaObjectModel."))
            {
                return true;
            }

            foreach (var evaluator in ShouldIgnoreTypeEvaluators)
            {
                if (evaluator.Invoke(assembly, type))
                {
                    return true;
                }
            }

            return false;
        }
    }