Ich weiß, dass es einige Fragen, die diese Adresse, aber die Antworten in der Regel folgen entlang der Linien eines Wörterbuchs oder Sammlung von Parametern zu empfehlen, die nicht in meiner Situation nicht funktioniert.Dynamisch C# Eigenschaften zur Laufzeit
ich eine Bibliothek verwende, die durch Reflexion arbeitet viele kluge Dinge mit Objekten mit Eigenschaften zu tun. Dies funktioniert sowohl mit definierten Klassen als auch mit dynamischen Klassen. Ich brauche noch einen Schritt weiter zu gehen und tut etwas in diese Richtung:
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;
}
Die Bibliothek funktioniert gut mit einem dynamischen Variablentyp, mit Eigenschaften manuell zugewiesen. Ich weiß jedoch nicht, wie viele oder welche Eigenschaften vorher hinzugefügt werden.
+1. Anmerkung: Warum geben Sie kein Dictionary statt dynamic zurück? (zumindest IDictionary)? Ich meine, die Rückkehr der Dynamik ist ein wenig "irreführend", da Sie immer ein Wörterbuch zurückgeben werden. – Veverke