Für den Umgang mit Auswahllisten steht eine API zu Verfügung. Die programmierten Auswahllisten haben den konkreten Typ EnumMyEnum. Die konfigurierten Enums sind immer vom Typ ValueEnum welcher auch der Basistyp der programmierten Auswahlilisten ist.

Api.Enum

Werte laden

Man kann einzelne Werte einer Auswahlliste laden.

EnumMyEnum firstValue = Api.Enum.GetEnumValue<EnumMyEnum>(EnumMyEnum.FirstValue.ValueGuid);
ValueEnum secondValueBase = Api.Enum.GetEnumValue(EnumMyEnum.SecondValue.ValueGuid);
EnumMyEnum secondValue = (EnumMyEnum)secondValueBase;

Und man kann alle Werte einer Auswahlliste laden

IEnumerable<EnumMyEnum> allValues = Api.Enum.GetEnumValues<EnumMyEnum>();
IEnumerable<ValueEnum> allValuesBase = Api.Enum.GetEnumValues(EnumMyEnum.MasterGuid);

Auswahlliste laden

Man kann einen einzelne oder alle Auswahlllsiten laden.

MasterEnum master = Api.Enum.GetMasterEnum(EnumMyEnum.MasterGuid);
IReadOnlyCollection<MasterEnum> masters = Api.Enum.GetAllMasterEnums();

Wenn man den Typ der Auswahlliste hat, kann man auch die Guid laden.

Guid masterGuid = Api.Enum.GetMasterGuidByType(typeof(EnumMyEnum));

Werte auf Basis ihrer Übersetzung erhalten

Wenn einem nur die Übersetzung bekannt ist, kann man in Ausnahmesituationen auch den Wert auf Basis der Übersetzung laden. Dies ist aber nicht zu empfehlen, da die Übersetzungen sich zu Jederzeit ändern können.

IEnumerable<ValueEnum> valuesByTranslation = Api.Enum.GetEnumValuesByTranslation(master, "First value", caseInsensitiv: true);

Mit dieser Methode ist es möglich auf Basis eines Textes einen neuen Wert anzulegen falls er noch nicht existiert. Insbesondere beim Import macht dies Sinn.

(Guid valueGuid, bool isNew) thirdValue = Api.Enum.GetOrCreateEnumValueByTranslation(master, "Third value", caseInsensitiv: true);