/// <summary> /// Type compliance is perfect for types without properties, other bad /// </summary> public override int TypeCompliance(Type targetType) { // Determine base properties from supported types var baseProperties = SupportedTypes .SelectMany(t => t.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) .Select(prop => prop.Name).Distinct().ToList(); // Get properties from target type and make sure all are defined by the base class var targetProps = targetType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) .Select(prop => prop.Name).Distinct(); return(targetProps.All(baseProperties.Contains) ? PerfectMatch : BadCompliance); }