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


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

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

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

Аргумент экземпляра: невозможно преобразовать из "typeA" в "typeB".
Instance argument: cannot convert from 'typeA' to 'typeB'.

Данная ошибка возникает при попытке вызвать метод расширения из класса, который он не расширяет. В приведенном здесь примере метод расширения определен для производного класса A, но не для базового класса B.

Исправление данной ошибки

  • Создайте новый метод расширения для типа, в котором он вызван, или переместите вызов метода в объект типа, расширяемого существующим методом.

Пример

В следующем коде возникают ошибки CS1928 и CS1929.

// cs1929.cs
using System.Linq;
    using System.Collections;

    static class Ext
    {
        public static void ExtMethod(this A a)
        {
        }
    }

    class A : B
    {
    }

    class B
    {
        static void Main()
        {
            B b = new B();
            b.ExtMethod(); // CS1929
        }
    }

См. также

Ссылки

Методы расширения (руководство по программированию в C#)