Error del compilador CS1546

Actualización: noviembre 2007

Mensaje de error

El lenguaje no admite la propiedad, el indizador o el evento 'propiedad'; intente llamar directamente al método de descriptor de acceso 'descriptor de acceso'
Property, indexer, or event 'property' is not supported by the language; try directly calling accessor method 'accessor'

El código desarrollado utiliza un objeto que posee una propiedad indizada predeterminada e intenta usar la sintaxis indizada. Para resolver este error, llame al método de descriptor de acceso de la propiedad. Para obtener más información sobre los indizadores y las propiedades, vea Indizadores (Guía de programación de C#).

El código siguiente genera el error CS1546:

Ejemplo

Este código está formado por un archivo .cpp, que compila en una .dll y un archivo .cs, que utiliza esa .dll. El código siguiente es para el archivo .dll. Define una propiedad a la que tendrá acceso el código del archivo .cs.

// CPP1546.cpp
// compile with: /clr /LD
using namespace System;
public ref class MCPP
{
public:
    property int Prop [int,int]
    {
        int get( int i, int b )
        {
            return i;
        }
    }
};

Éste es el archivo de C#:

// CS1546.cs
// compile with: /r:CPP1546.dll 
using System;
public class Test
{
    public static void Main()
    {
        int i = 0;
        MCPP mcpp = new MCPP();
        i = mcpp.Prop(1,1); // CS1546
        // Try the following line instead:
        // i = mcpp.get_Prop(1,1);
    }
}