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


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

"construct1_name" — это "construct1", который недопустим в данном контексте.

Компилятор обнаружил непредвиденное построение, например следующее:

  • Конструктор класса не является допустимым выражением теста в условном операторе.

  • Имя класса использовалось вместо имени экземпляра для ссылки на элемент массива.

  • Идентификатор метода используется как если бы он был структурой или классом

Примеры

Пример 1

В следующем примере возникает ошибка CS0119: "C.B()" является методом, недопустимым в данном контексте. Эту ошибку можно исправить, изменив имя метода C.Bили используя полное имя для класса B , например N2.B.

namespace N2
{
    public static class B
    {
        public static void X() {}
    }
}

namespace N1
{
    public class C
    {
        void B() {}
        void M() => B.X();   // CS0119
    }
}

Пример 2

В следующем примере показан распространенный сценарий, когда CS0119 возникает при попытке добавить имена классов в коллекцию типов. Компилятор ожидает Type экземпляры, а не имена классов.

using System;
using System.Collections.Generic;

public class Page_BaseClass { }
public class Page_CRTable { }
public class Page_DBGridWithTools { }

public static class PageTypeManager
{
    public static List<Type> GetPageTypes()
    {
        List<Type> pageTypesList = new List<Type>();
        
        // CS0119: 'Page_BaseClass' is a type, which is not valid in the given context
        pageTypesList.Add(Page_BaseClass);
        pageTypesList.Add(Page_CRTable);
        pageTypesList.Add(Page_DBGridWithTools);
        
        return pageTypesList;
    }
}

Чтобы устранить эту ошибку, используйте Type.GetType метод или typeof оператор для получения Type экземпляров:

using System;
using System.Collections.Generic;

public static class PageTypeManager
{
    public static List<Type> GetPageTypes()
    {
        List<Type> pageTypesList = new List<Type>();
        
        // Use typeof operator to get Type instances
        pageTypesList.Add(typeof(Page_BaseClass));
        pageTypesList.Add(typeof(Page_CRTable));
        pageTypesList.Add(typeof(Page_DBGridWithTools));
        
        return pageTypesList;
    }
    
    // Alternative: Load types dynamically by name
    public static List<Type> GetPageTypesByName(string[] typeNames)
    {
        List<Type> pageTypesList = new List<Type>();
        
        foreach (string typeName in typeNames)
        {
            Type type = Type.GetType(typeName);
            if (type != null)
            {
                pageTypesList.Add(type);
            }
        }
        
        return pageTypesList;
    }
}