我想问题就在这里,先试试。
public IFeatureClass IFieldEdit_Example(IFeatureDataset featureDataset, IDomain domain, String nameOfFeatureClass)
{
//This function creates a new feature class in a supplied feature dataset by building all of the
//fields from scratch. IFeatureClassDescription (or IObjectClassDescription if the table was
//being created at the workspace level) could be used to get the required fields, and they are
//used to get the InstanceClassID and ExtensionClassID.
//create new Fields collection
IFields fields = new FieldsClass();
IFieldsEdit fieldsEdit = (IFieldsEdit)fields;
fieldsEdit.FieldCount_2 = 4;
//create FID Field
IField fieldUserDefined = new FieldClass();
IFieldEdit fieldEdit = (IFieldEdit)fieldUserDefined;
fieldEdit.AliasName_2 = "FID";
fieldEdit.Name_2 = "SE_ROW_ID";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;
fieldsEdit.set_Field(0,fieldUserDefined);
//create Shape Field
fieldUserDefined = new FieldClass();
fieldEdit = (IFieldEdit)fieldUserDefined;
//set up Geometry Definition
IGeometryDef geometryDef = new GeometryDefClass();
IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
geometryDefEdit.AvgNumPoints_2 = 5;
geometryDefEdit.GeometryType_2 = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline;
geometryDefEdit.GridCount_2 = 1;
geometryDefEdit.set_GridSize(0, 0); //Allow ArcGIS to determine valid grid values based on the features.
geometryDefEdit.HasM_2 = false;
geometryDefEdit.HasZ_2 = false;
//note that the spatial ReferenceEquals will be inherited from the feature dataset.
fieldEdit.Name_2 = "SHAPE";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
fieldEdit.GeometryDef_2 = geometryDef;
fieldEdit.IsNullable_2 = true;
fieldEdit.Required_2 = true;
fieldsEdit.set_Field(1, fieldUserDefined);
//create small integer field with supplied domain
fieldUserDefined = new FieldClass();
fieldEdit = (IFieldEdit)fieldUserDefined;
fieldEdit.DefaultValue_2 = 6;
if (domain != null)
{
fieldEdit.Domain_2 = domain;
}
fieldEdit.DomainFixed_2 = true;
fieldEdit.Editable_2 = true;
fieldEdit.IsNullable_2 = false;
fieldEdit.Name_2 = "population";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;
fieldsEdit.set_Field(2, fieldUserDefined);
//create double field
fieldEdit.AliasName_2 = "average income for 1999-2000";
fieldEdit.Editable_2 = true;
fieldEdit.IsNullable_2 = false;
fieldEdit.Name_2 = "average_income";
fieldEdit.Precision_2 = 2;
fieldEdit.Scale_2 = 5;
fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
//Note: Lenght is only required for esriFieldType.esriFieldTypeString
//fieldEdit.Length_2 = 50;
fieldsEdit.set_Field(3, fieldUserDefined);
Console.WriteLine("IFieldsEdit has a field count of {0}", fieldsEdit.FieldCount);
IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass();
IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc;
return featureDataset.CreateFeatureClass(nameOfFeatureClass, fields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, "SHAPE", "");
}