Derleyici Hatası CS0119

'construct1_name', verilen bağlamda geçerli olmayan bir 'construct1'dir.

Derleyici aşağıdaki gibi beklenmeyen bir yapı algılamış:

  • Sınıf oluşturucu, koşullu deyimde geçerli bir test ifadesi değildir.

  • Dizi öğesine başvurmak için örnek adı yerine sınıf adı kullanıldı.

  • Yöntem tanımlayıcısı bir yapı veya sınıfmış gibi kullanılır

Örnekler

Örnek 1

Aşağıdaki örnek CS0119 oluşturur: 'C.B()', verilen bağlamda geçerli olmayan bir yöntemdir. yönteminin C.Badını değiştirerek veya gibi N2.Bsınıfın B tam adını kullanarak bu hatayı düzeltebilirsiniz.

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

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

Örnek 2

Aşağıdaki örnek, bir tür koleksiyonuna sınıf adları eklemeye çalışırken CS0119'un oluştuğu yaygın bir senaryoyu gösterir. Derleyici, sınıf adlarını değil örnekleri bekler 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;
    }
}

Bu hatayı düzeltmek için Type.GetType yöntemini veya typeof işlecini kullanarak Type örnekleri alın.

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