private static HierarchyFlags GetFlags(ITypeSymbol type) { HierarchyFlags flags = 0; if (type.IsTypeOf(WellKnownType.System_Reflection_IReflect)) { flags |= HierarchyFlags.IsSystemReflectionIReflect; } ITypeSymbol?baseType = type; while (baseType != null) { if (baseType.IsTypeOf(WellKnownType.System_Type)) { flags |= HierarchyFlags.IsSystemType; } foreach (var iface in baseType.Interfaces) { if (iface.IsTypeOf(WellKnownType.System_Reflection_IReflect)) { flags |= HierarchyFlags.IsSystemReflectionIReflect; } } baseType = baseType.BaseType; } return(flags); }
private static HierarchyFlags GetFlags(ITypeSymbol type) { HierarchyFlags flags = 0; if (type.Name == "IReflect" && type.ContainingNamespace.GetDisplayName() == "System.Reflection") { flags |= HierarchyFlags.IsSystemReflectionIReflect; } ITypeSymbol?baseType = type; while (baseType != null) { if (baseType.Name == "Type" && baseType.ContainingNamespace.GetDisplayName() == "System") { flags |= HierarchyFlags.IsSystemType; } foreach (var iface in baseType.Interfaces) { if (iface.Name == "IReflect" && iface.ContainingNamespace.GetDisplayName() == "System.Reflection") { flags |= HierarchyFlags.IsSystemReflectionIReflect; } } baseType = baseType.BaseType; } return(flags); }
private static bool IsSystemReflectionIReflect(HierarchyFlags flags) => (flags & HierarchyFlags.IsSystemReflectionIReflect) != 0;
private static bool IsSystemType(HierarchyFlags flags) => (flags & HierarchyFlags.IsSystemType) != 0;