public void AddEnum <TEnum>(ComboBox control, Expression <Func <TDocument, TEnum> > property)
        {
            PropertyInfo             pi          = GetProperty(property);
            Func <TDocument, string> setProperty = (doc) =>
            {
                pi.SetValue(doc, (control.SelectedItem as ListItem <TEnum>).Value);
                return(pi.Name);
            };

            var func = property.Compile();
            Action <TDocument> setControl = (doc) =>
            {
                ComboBoxExtensions.SetValue(control, func.Invoke(doc));
            };

            AddEnum <TEnum>(control, setProperty, setControl);
        }