Bunu ele alan bazı sorular olduğunu biliyorum, ancak cevaplar genellikle benim durumumda işe yaramayan bir Sözlük veya Parametreler Koleksiyonu önerme çizgisini takip ediyor.
Özelliklere sahip nesnelerle birçok akıllıca şey yapmak için yansıma yoluyla çalışan bir kitaplık kullanıyorum. Bu, tanımlı sınıflarla ve dinamik sınıflarla çalışır. Bunu bir adım daha ileri götürmem ve şu satırlarda bir şeyler yapmam gerekiyor:
public static object GetDynamicObject(Dictionary<string,object> properties) {
var myObject = new object();
foreach (var property in properties) {
//This next line obviously doesn't work...
myObject.AddProperty(property.Key,property.Value);
}
return myObject;
}
public void Main() {
var properties = new Dictionary<string,object>();
properties.Add("Property1",aCustomClassInstance);
properties.Add("Property2","TestString2");
var myObject = GetDynamicObject(properties);
//Then use them like this (or rather the plug in uses them through reflection)
var customClass = myObject.Property1;
var myString = myObject.Property2;
}
Kitaplık, manuel olarak atanan özelliklerle dinamik değişken türüyle sorunsuz çalışır. Ancak önceden kaç tane veya hangi özelliklerin ekleneceğini bilmiyorum.