var properties = obj.GetType().GetProperties().Where(m => !m.PropertyType.IsArray && !m.PropertyType.BaseType.IsArray && !m.PropertyType.IsGenericType);
com isso já tirei os arrays e tirei os generics ( lista, etc..) agora só preciso excluir as propriedades de classes como Endereco