ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.DDL Namespace / FeatureClassDescription Class / FeatureClassDescription Constructor / FeatureClassDescription Constructor(FeatureClassDefinition)
The ArcGIS.Core.Data.FeatureClass that the description object is representing.
Example Version

FeatureClassDescription Constructor(FeatureClassDefinition)
Creates a description object of the ArcGIS.Core.Data.FeatureClass.
Syntax

Parameters

featureClassDefinition
The ArcGIS.Core.Data.FeatureClass that the description object is representing.
Exceptions
Example
Create Domain and Field Definition on KG Schemas with SchemaBuilder
    await QueuedTask.Run(() =>
    {
      using (var kg = GetKnowledgeGraph())
      {
        if (kg == null)
          return;

        var entity_name = "Fruit";

        //Domains are managed on the GDB objects...
        var fruit_fc = kg.OpenDataset<FeatureClass>(entity_name);
        var fruit_fc_def = fruit_fc.GetDefinition();

        var fieldFruitTypes = fruit_fc_def.GetFields()
              .FirstOrDefault(f => f.Name == "FruitTypes");
        var fieldShelfLife = fruit_fc_def.GetFields()
            .FirstOrDefault(f => f.Name == "ShelfLife");

        //Create a coded value domain and add it to a new field
        var fruit_cvd_desc = new CodedValueDomainDescription(
          "FruitTypes", FieldType.String, 
          new SortedList<object, string> {
                          { "A", "Apple" },
                          { "B", "Banana" },
                          { "C", "Coconut" }
          })  {
            SplitPolicy = SplitPolicy.Duplicate,
            MergePolicy = MergePolicy.DefaultValue
        };

        //Create a Range Domain and add the domain to a new field description also
        var shelf_life_rd_desc = new RangeDomainDescription(
                                      "ShelfLife", FieldType.Integer, 0, 14);

        var sb = new SchemaBuilder(kg);
        sb.Create(fruit_cvd_desc);
        sb.Create(shelf_life_rd_desc);

        //Create the new field descriptions that will be associated with the
        //"new" FruitTypes coded value domain and the ShelfLife range domain
        var fruit_types_fld = new ArcGIS.Core.Data.DDL.FieldDescription(
                                      "FruitTypes", FieldType.String);
        fruit_types_fld.SetDomainDescription(fruit_cvd_desc);

        //ShelfLife will use the range domain
        var shelf_life_fld = new ArcGIS.Core.Data.DDL.FieldDescription(
"ShelfLife", FieldType.Integer);
        shelf_life_fld.SetDomainDescription(shelf_life_rd_desc);

        //Add the descriptions to the list of field descriptions for the
        //fruit feature class - Modify schema needs _all_ fields to be included
        //in the schema, not just the new ones to be added.
        var fruit_fc_desc = new FeatureClassDescription(fruit_fc_def);

        var modified_fld_descs = new List<ArcGIS.Core.Data.DDL.FieldDescription>(
          fruit_fc_desc.FieldDescriptions);

        modified_fld_descs.Add(fruit_types_fld);
        modified_fld_descs.Add(shelf_life_fld);

        //Create a feature class description to modify the fruit entity
        //with the new fields and their associated domains
        var updated_fruit_fc =
          new FeatureClassDescription(entity_name, modified_fld_descs,
                                      fruit_fc_desc.ShapeDescription);

        //Add the modified fruit fc desc to the schema builder
        sb.Modify(updated_fruit_fc);

        //Run the schema builder
        try
        {
          if (!kg.ApplySchemaEdits(sb))
          {
            var err_msg = string.Join(",", sb.ErrorMessages.ToArray());
            System.Diagnostics.Debug.WriteLine($"Create domains error: {err_msg}");
          }
        }
        catch (Exception ex)
        {
          System.Diagnostics.Debug.WriteLine(ex.ToString());
        }
      }
    });
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also