Nesnelerin listesi için bir dosya sorgulamak için LINQ-to-XML kullanıyorum. Hepsi aynı yapıya sahiptir (bir dizi seçenek, belirsiz uzunlukta bir parametre listesi). XML dosyasındaki isimlerine dayanarak, parametreleri tamamen farklı şeyler için kullanmak istiyorum - bu yüzden bu nesnenin alt sınıflarını yaptım. Ben bir vaka bildirimi gibi bir şey yapmadan, dinamik olarak doğru inşa edici çağırmak nasıl -C# 'da bir kurucuyu dinamik olarak nasıl dinleyebilirim?
Sorum şu? Ya da XML'den farklı alt sınıfları zarif bir şekilde örnek almanın çözümü başka yerde mi yatıyor?
class Object1
{
string name;
OptionObj opt;
List<Param> parameters;
}
class sonOfObject : Object1
{
public void ExecuteSomething()
{
//do something with the parameters
}
}
class secondSonOfObject : Object1
{
public void ExecuteSomething()
{
//do something entirely different with the parameters
}
}
var query = from x in xmlDoc.Descendants("Object")
select new Object
{
//select the object from the XML
}
bu kod biraz sonra ben daha genel sorgu nesneden sonOfObject yapmak için bir kopya kurucu kullanabilirsiniz. Ama bunu dinamik olarak, çocuk sınıfının ismine göre nasıl yaparım?
Sana bir türünden MethodInfo almak ve ala çağırmak biliyorum ...
MethodInfo m = t.GetMethod(someName);
m.Invoke(yourObj, null);
Ama bu 9 ya bu çocuk sınıf nesnelerinin 10 örneğini zorunda kalacak anlamına (ve türünü alacağı her biri için) ve hala bir çeşit dava cümlesiyle sonuçlanır.
dinamik çocuk sınıf kurucular çağırmak için daha şık bir yolu var mı?
1 OP yeniden okuduktan sonra bu gerçekten iyi bir çözüm olduğuna inanıyoruz. –