Поделиться через


Ошибка компилятора CS0570

Обновлен: Ноябрь 2007

Сообщение об ошибке

Свойство, индексатор или событие "имя" не поддерживается этим языком; попытайтесь вызвать метод доступа "имя!" напрямую
Property, indexer, or event 'name' is not supported by the language; try directly calling accessor method 'name!'

Эта ошибка возникает при использовании импортированных метаданных, созданных другим компилятором. Код попытался использовать члена класса, который компилятору обработать не удалось.

Пример

В следующей программе на языке C++ используется атрибут "RequiredAttributeAttribute", который не может использоваться другими языками.

// 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; }
   };
};

Этот пример приводит к возникновению ошибки 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
   }
}