La forma más eficiente de analizar una enumeración marcada en una lista

Tengo una enumeración marcada y necesito recuperar los nombres de todos los valores establecidos en ella.

Actualmente estoy aprovechando el método ToString () de la enumeración que devuelve los elementos separados por comas.

    public void SetRoles(Enums.Roles role)
    {
        IList<Entities.Role> roleList = role.ToString("G").Split(',')
            .Select(r => new Entities.Role(r.Trim()))
            .ToList();
    ...
    }

Estoy seguro de que debe haber una mejor manera que esta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta