Error del compilador CS0570

Actualización: noviembre 2007

Mensaje de error

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

Este error se produce al utilizar metadatos importados que se generaron con otro compilador. El código creado intenta utilizar un miembro de clase que el compilador no es capaz de procesar.

Ejemplo

El programa C++ siguiente utiliza un atributo, RequiredAttributeAttribute, que otros lenguajes no pueden utilizar.

// CPP0570.cpp
// compile with: /clr /LD

using namespace System;
using namespace System::Runtime::CompilerServices;

namespace CS0570_Server {
   [RequiredAttributeAttribute(Int32::typeid)]  
   public ref struct Scenario1 {
      int intVar;
   };

   public ref struct CS0570Class {
      Scenario1 ^ sc1_field;

      property virtual Scenario1 ^ sc1_prop {
         Scenario1 ^ get() { return sc1_field; }
      }

      Scenario1 ^ sc1_method() { return sc1_field; }
   };
};

El código siguiente genera el error CS0570.

// CS0570.cs
// compile with: /reference:CPP0570.dll
using System;
using CS0570_Server;

public class C {
   public static int Main() {
      CS0570Class r = new CS0570Class();
      r.sc1_field = null;   // CS0570
      object o = r.sc1_prop;   // CS0570
      r.sc1_method();   // CS0570
   }
}