Die Generierung von dynamischen Objekt aus dem Wörterbuch mit C # Reflexion
Ich habe forschen ein wenig über reflections in C # und würde gerne wissen, ob ich ein Wörterbuch mit Schlüssel-Werte erstellen können, die ein Objekt mit der variable mit dem Namen, der jeden Schlüssel im dictionary und Ihrer Werte, der Schlüssel Wert, Wörterbuch.
Habe ich eine Methode, die genau das Gegenteil tut, extrahieren eines Objekts aus einem Wörterbuch dieses Wörterbuch enthält die Schlüssel und die Eigenschaften der Klasse und Ihrer Werte, der Wert der Eigenschaften.
Frage ich mich, wie Sie dies tun, wenn möglich.
Unten ist meine Methode, die Auszüge eines Wörterbuchs, die ein Objekt:
protected Dictionary<String, String> getObjectProperty(object objeto)
{
Dictionary<String, String> dictionary = new Dictionary<String, String>();
Type type = objeto.GetType();
FieldInfo[] field = type.GetFields();
PropertyInfo[] myPropertyInfo = type.GetProperties();
String value = null;
foreach (var propertyInfo in myPropertyInfo)
{
if (propertyInfo.GetIndexParameters().Length == 0)
{
value = (string)propertyInfo.GetValue(objeto, null);
value = value == null ? null : value;
dictionary.Add(propertyInfo.Name.ToString(), value);
}
}
return dictionary;
}
Meinst du "dynamic" - typisierte Objekt? Oder neue Art?
Welche version von .NET framework, die Sie verwenden?
Das Objekt ist bereits vorhanden, wenn diese Funktion verlassen, ich muss nur gegossen (myObject) das Ergebnis an das bestehende Objekt. .NET 4.0
Kann sein, dass das ist, was Sie suchen [Konvertieren Dictionary<string, object> Anonymes Objekt?][1] [1]: stackoverflow.com/questions/7595416/...
Welche version von .NET framework, die Sie verwenden?
Das Objekt ist bereits vorhanden, wenn diese Funktion verlassen, ich muss nur gegossen (myObject) das Ergebnis an das bestehende Objekt. .NET 4.0
Kann sein, dass das ist, was Sie suchen [Konvertieren Dictionary<string, object> Anonymes Objekt?][1] [1]: stackoverflow.com/questions/7595416/...
InformationsquelleAutor Elton da Costa | 2013-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie bereits ein Wörterbuch, ich möchte vermeiden, Reflexion und verwenden nur
DynamicObject
Beispiel:
Kann wie folgt verwendet werden:
InformationsquelleAutor Peter Ritchie
Ich bin nicht sicher, ob dies ist, was Sie suchen, aber die Beurteilung durch Ihre Frage, ich denke, Sie wollen
instanziieren von Typen zur Laufzeit anhand der Typen befindet sich in einem Wörterbuch, die erhalten werden, indem eine Taste.
Wenn das so ist, dann erstellen Sie die folgende Klasse, die halten die Schlüssel-Wert-Paare von strings, das zu Ihrem Schlüssel, und Typen repräsentieren Ihre Werte, die instanziiert werden.
Können Sie auch vier test Klassen zu testen, dieses setup.
Sobald dies erledigt ist, führen Sie die folgenden Zeilen code, um alle Arten aus dem Wörterbuch, instanziieren Sie und warfen Sie auf geeignete Arten. Wie Sie vielleicht bemerkt, die letzten Computer Beispiel zeigt Ihnen, wie Sie mehrere Parameter (in diesem Fall zwei) auf die neu erstellte Instanz und schicken Sie es als eine Instanz des Typs Objekt.
In das Ende können Sie werfen es auf die Computer geben, so dass Sie überprüfen können, dass die Konstruktor-Parameter ging tatsächlich zu den entsprechenden Eigenschaften.
Ich bearbeitet meine Antwort also ja ist, können Sie genau das tun. Geben Sie nur so viele Parameter, die Sie möchten, um Ihre neue Instanz und wirf ihn auf ein Objekt durch Verwendung der generischen Typ definiert auf die GetInstance - <T>(string, params object []) - Methode.
InformationsquelleAutor Mario Stopfer
Seit
ExpandoObject
ist ein Wörterbuch, können Sie mit dieser Erweiterung Funktion:Verwendung:
InformationsquelleAutor toddmo