---
title: MetaEnum class
slug: commerce-connect-15/docs/metaenum-class
docTags: 
createdAt: 2026-07-30T20:34:43.000Z
---

When a new meta-enum is created, a meta-type with the `McDataType` property and `McDataType.Enum` value is registered. If an enumerator was created, you can create a field with the enumerator meta-type. The entity object property returns the selected item ID (`Int32`) or an array of selected item IDs (`Int32[]`).

:::hint{type="info"}
**Note**
When you create and delete meta-enums, remember that you can only modify a meta-model in **Design** mode. See the [MetaClassManager class](docId\:NP7et4GlIKzHCSUK2aXTB) section.
:::

## Get an enumerator collection

Because the enumerator is an original meta-type, you can get all enumerators from the `MetaClassManager.RegisteredTypes` property.

**Example:** Find all enumerators:

```csharp
foreach(MetaFieldType type in DataContext.Current.MetaModel.RegisteredTypes)
{
  if (type.McDataType == McDataType.Enum)
  {
    // The enumerator is found
  }
}
```

## Manage enumerators

The following `MetaEnum` class methods are useful when managing enumerators:

- Call `AddItem`, passing meta-type, item-friendly name, and order ID, to add an enum item to the enumerator.
- Call `ChangeOrder`, passing meta-type, item ID, and new order ID to rename an enum item.
- Call `Create`, passing type name, friendly name, and `MultyValue` flag to create a new enumerator.
- Call `GetItems`, passing meta-type, to get all enum items.
- Call `IsUsed`, passing meta-type, to determine whether the specified type is used in any meta-class.
- Call `Remove`, passing meta-type, to delete an enumerator.
- Call `RemoveItem`, passing meta-type and item ID, to remove an enum item.
- Call `RenameItem`, passing meta-type, item ID, and the new enum name, to rename an enum item.
- Call `UpdateItem`, passing meta-type, item-friendly name, and order ID to update an enum item.

## Create an enumerator

Call the `Create` method of the `MetaEnum` class, passing type name, friendly name, and `MultyValue` flag to create a new enumerator.

**Example:** Create an enumerator:

```csharp
MetaFieldType newEnum = MetaEnum.Create(enumName, enumFriendlyName, bMultyValue);
```

## Create an enum meta-field

You can create a field with the enumerator meta-type if you created an enumerator.

**Example:** Create an enum meta-field:

```csharp
public MetaField CreateEnumField(string name, string friendlyName, string enumName, bool isNullable, string defaultValue, bool enumEditable) {
  if (name == null)
    throw new ArgumentNullException("name");

  if (friendlyName == null)
    throw new ArgumentNullException("friendlyName");

  AttributeCollection attr = new AttributeCollection();
  attr.Add(McDataTypeAttribute.EnumEditable, enumEditable);
  MetaField retVal = this.MetaClass.CreateMetaField(name, friendlyName, enumName, isNullable, defaultValue, attr);
  return retVal;
}
```
