Sdílet prostřednictvím


Chyba kompilátoru CS0119

"construct1_name" je konstrukt1, který není platný v daném kontextu.

Kompilátor zjistil neočekávaný konstruktor, například následující:

  • Konstruktor třídy není platným testovacím výrazem v podmíněném příkazu.

  • Místo názvu instance se použil název třídy, který odkazuje na prvek pole.

  • Identifikátor metody se používá, jako by šlo o strukturu nebo třídu.

Příklady

Příklad 1

Následující ukázka generuje CS0119: C.B() je metoda, která není platná v daném kontextu. Tuto chybu můžete opravit změnou názvu metody C.Bnebo použitím plně kvalifikovaného B názvu třídy, například N2.B.

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

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

Příklad 2

Následující ukázka ukazuje běžný scénář, kdy se cs0119 vyskytuje při pokusu o přidání názvů tříd do kolekce typů. Kompilátor očekává Type instance, nikoli názvy tříd.

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

Pokud chcete tuto chybu opravit, pomocí Type.GetType metody nebo operátoru typeof získejte Type instance:

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