ERROR

No es posible acceder a las propiedades WriteOnly de ArcObjects y se lanza el error de compilación BC30643 La propiedad es de un tipo no compatible en Microsoft Visual Studio 2015 con VB.NET

Last Published: April 25, 2020

Mensaje de error

Al intentar compilar un código de ArcObjects para definir una propiedad de interfaz que tiene un parámetro de entrada (normalmente el parámetro es un índice), Visual Studio 2015 devuelve el siguiente error de compilador:

Error: 
BC30643 La propiedad "ESRI.ArcGIS.xxx" es de un tipo no compatible

Visual Basic

Error: 
BC30643 La propiedad es de un tipo no compatible (Visual Basic)

A continuación, se muestra un ejemplo del uso de 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#

Al intentar compilar un código de ArcObjects para definir una propiedad de interfaz que tiene un parámetro de entrada (normalmente el parámetro es un índice), Visual Studio 2015 devuelve el siguiente error de compilador:

Error:  
CS1546 El idioma no admite la propiedad, el indizador o el evento; 
intente llamar directamente al método del descriptor de acceso...
A continuación, se muestra un ejemplo del uso de 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;

Causa

Varias propiedades WriteOnly con parámetros de entrada se ven afectadas y no es posible acceder a ellas con Visual Basic en Visual Studio 2015, incluidas, entre otras:

  • IFieldsEdit
  • IGeometryDefEdit
  • ITableSort
  • ISpatialJoin
  • ISymbolCollectionElement

Solución o solución alternativa

Alternativa para Visual Basic
Para el problema con Visual Basic, utilice Visual Studio 2013 para compilar y depurar el código.

Alternativa para C#
Al utilizar C#, tras la salida del compilador, sobrescriba el código como se muestra a continuación:

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

De esta manera, se arregla el error del compilador.

Id. de artículo:000001060

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Descubrir más sobre este tema