错误

无法访问 ArcObjects WriteOnly 属性,并在 Microsoft Visual Studio 2015 (VB.NET) 中抛出“BC30643 属性为不支持的类型”编译错误

Last Published: April 25, 2020

错误消息

当尝试编译 ArcObjects 编码来设置带有输入参数的界面属性(通常参数是一个索引),Visual Studio 2015 将返回 以下编译器错误:

错误: 
BC30643 属性“ESRI.ArcGIS.xxx”为不支持的类型

Visual Basic

错误: 
BC30643 属性为不支持的类型 (Visual Basic)

以下是 IFieldsEdit 的使用示例。

Dim pFieldEdit As IFieldEdit = pField
pFieldEdit.Name_2 = "OBJECTID"
pFieldEdit.AliasName_2 = "FID"
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID

Dim pFieldsEdit As IFieldsEdit = pFields
pFieldsEdit.FieldCount_2 = 2
pFieldsEdit.Field_2(0) = pField

C#

当尝试编译 ArcObjects 编码来设置带有输入参数的界面属性(通常参数是一个索引),Visual Studio 2015 将返回以下编译器错误:

错误:
语言不支持 CS1546 属性、索引器或事件, 
请尝试直接调用存取器方法...
以下是 IFieldsEdit 的使用示例。
IField field = new Field();
IFieldEdit fieldEdit = field as IFieldEdit;
fieldEdit.Name_2 = "OBJECTID";
fieldEdit.AliasName_2 = "FID";
fieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;

IFields fields = new Fields();
IFieldsEdit fieldsEdit = fields as IFieldsEdit;
fieldsEdit.Field_2[0] = field;

原因

多个带有输入参数的 WriteOnly 属性会受到影响,且无法访问 Visual Studio 2015 中的 Visual Basic,其中包括但可能不限于:

  • IFieldsEdit
  • IGeometryDefEdit
  • ITableSort
  • ISpatialJoin
  • ISymbolCollectionElement

解决方案或解决方法

Visual Basic 解决办法
对于 Visual Basic 问题,请使用 Visual Studio 2013 来编译和调试代码。

C# 解决办法
当使用 C# 时,请根据编译器输出重写代码,如下所示:

IFields fields = new Fields();
IFieldsEdit fieldsEdit = fields as IFieldsEdit;
//fieldsEdit.Field_2[0] = field;
fieldsEdit.set_Field(0, field);

此操作可修复编译器错误。

文章 ID:000001060

从 ArcGIS 专家处获得帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项

发现关于本主题的更多内容