C# "TypeInitializationException" hatası nasıl çözülür?

II.Wilhelm

Hectopat
Katılım
11 Eylül 2020
Mesajlar
1.821
Çözümler
6
Yer
Almanya
Daha fazla  
Cinsiyet
Erkek
Meslek
König
Merhaba. Bir araba kiralama uygulaması yapmaya çalışıyorum. Bunun için static bir Veritabanı sınıfı oluşturdum. Ama hata veriyor. Hatanın nereden kaynaklandığını çözemedim. Yardımcı olabilir misiniz?
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace ArabaKiralama.ClassFolder
{
    public static class SanalVeritabani
    {
        public static List<Kullanici> KullaniciListesi;
        public static List<Araba> TümArabalar;

        static SanalVeritabani()
        {
            TümArabalar = new List<Araba>();
            KullaniciListesi = new List<Kullanici>();

            TümArabalar.Add(new Araba(KullaniciListesi[0].KullaniciID, Araba.ArabaIDOlusturucu(), 5000, "Honda", "Civic", 2015, 6, "Sedan", null));
            KullaniciListesi.Add(new Kullanici(Kullanici.GuidOlusturucu(), "İsim", "Ertürk", "İ[email protected]", "Varansk", "Sifre11", Convert.ToDateTime("11-10-2007"), "Şehir", true));
        }

        public static Kullanici IDAlKullaniciVer(string ID)
        {
            foreach (Kullanici item in KullaniciListesi)
            {
                if (item.KullaniciID == ID)
                {
                    return item;
                }
            }
            return null;
        }

        public static bool ListedeBuKullaniciVarmi(string KullaniciAdi, string Sifre)
        {
            foreach (Kullanici kisi in KullaniciListesi)
            {
                if (kisi.KullaniciAdi == KullaniciAdi.Trim() && kisi.Sifre == Sifre.Trim())
                {
                    return true;
                }
            }
            return false;
        }

    }
}

1683890873347.png
 
Try-catch bloklarına alın ilgili alanı.

Yani şu şekilde;

C#:
        public static bool ListedeBuKullaniciVarmi(string KullaniciAdi, string Sifre)
        {
            try{
                foreach (Kullanici kisi in KullaniciListesi)
                {
                    if (kisi.KullaniciAdi == KullaniciAdi.Trim() && kisi.Sifre == Sifre.Trim())
                    {
                        return true;
                    }
                }
                return false;
            }catch(Exception e){
                MessageBox.Show(e.Message);
            }
        }

Sonra çıkan uyarıyı atınız.
 
Try-catch bloklarına alın ilgili alanı.

Yani şu şekilde;

C#:
        public static bool ListedeBuKullaniciVarmi(string KullaniciAdi, string Sifre)
        {
            try{
                foreach (Kullanici kisi in KullaniciListesi)
                {
                    if (kisi.KullaniciAdi == KullaniciAdi.Trim() && kisi.Sifre == Sifre.Trim())
                    {
                        return true;
                    }
                }
                return false;
            }catch(Exception e){
                MessageBox.Show(e.Message);
            }
        }

Sonra çıkan uyarıyı atınız.
Try Catch e girmedi.
 
Sorunu buldum. Araba nesnesini oluştururken Araba sınıfı içindeki ArabaSahibininID propertysine, oluşturulmuş bir kullanıcının ID'sini veriyordum. Ben static ctor içerisinde Önce kullanıcı sonra araba oluşturmam gerekirken önce araba sonra kullanıcı oluşturmuşum. Araba oluşturken de olmayan bir kullanıcının ID'sini almaya çalışmışım. Normalde Visual Studio'nun direkt olarak hatanın nerede oluştuğunu göstermesi lazımken nedense göstermedi.
 

Yeni konular

Geri
Yukarı