Çözüldü C# String'den class oluşturma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

486759

Hectopat
Katılım
21 Nisan 2020
Mesajlar
1.123
Çözümler
7
String ile class ismini nasıl özdeştirebilirim? Yapmak istediğim olay, tek bir buton üzerinden string parametresi ile farklı isimdeki classları oluşturmak.

Örneğin: MainPage mainPage = new MainPage();

Ben üstteki "MainPage" kelimesini string olarak atayarak nasıl class olarak çağırabilirim?
 
Çözüm
Java'da bu şekilde yapılabiliyor. Reflection olarak geçer. Çok büyük ihtimal .NET karşılığı vardır.
Java:
Object o = Class.forName("Sınıf_İsmi").newInstance();

Eğer oluşturulacak sınıflar belli ise her sınıfın bir Prototype'ını oluşuturup Dictionary<String, Object> olarak class ismi, prototype nesnesi olarak tutup. Dictionary'den çektikten sonra Clone diyerek nesne oluşturabilirsiniz.

Veya. Factory methodları oluşturup. <String, Action> tipinde bir Dictionary oluşturup. Clone vs. ile uğraşmadan doğrudan Action içerisinde ilgi nesnenin factory methodunu tutup. Invoke() diyerek nesneyi sıfırdan oluşturabilirsiniz.

Çözüm çok. Belki çok daha basit yolları vardır.
Java'da bu şekilde yapılabiliyor. Reflection olarak geçer. Çok büyük ihtimal .NET karşılığı vardır.
Java:
Object o = Class.forName("Sınıf_İsmi").newInstance();

Eğer oluşturulacak sınıflar belli ise her sınıfın bir Prototype'ını oluşuturup Dictionary<String, Object> olarak class ismi, prototype nesnesi olarak tutup. Dictionary'den çektikten sonra Clone diyerek nesne oluşturabilirsiniz.

Veya. Factory methodları oluşturup. <String, Action> tipinde bir Dictionary oluşturup. Clone vs. ile uğraşmadan doğrudan Action içerisinde ilgi nesnenin factory methodunu tutup. Invoke() diyerek nesneyi sıfırdan oluşturabilirsiniz.

Çözüm çok. Belki çok daha basit yolları vardır.
 
Çözüm
Sorunu şu şekilde çözdüm:
C#:
Type type = Type.GetType(assemblyQualifiedName);
if (type != null)
{
    object instance = Activator.CreateInstance(type);
}

@The Anorak yardımınız için çok teşekkür ederim hocam.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…