C# - Erkennung AnonymousType new{name=Wert} und konvertieren in Dictionary<string,object>
Brauche ich, um zu erkennen, ob ein Objekt erstellt wurde anonym wie new{name=Wert}
wenn es ein AnonymousType, es sollte noch hinzufügen, dass es Eigenschaften von Namen/Werte in eine
Dictionary<string,object>
Dies ist, was ich hackte mich zusammen:
var name="name";
var obj = new { name = new object(), };
var lookup = new Dictionary<string,object>();
if(obj.GetType().Name.StartsWith("<>f__AnonymousType"))
{
foreach (var property in obj.GetType().GetProperties())
{
lookup[property.Name] = property.GetValue(obj, null);
}
}
else
{
lookup[name]=obj;
}
Ich Frage mich, ob es einen besseren/schnelleren Weg erkennen AnonymousTypes,
oder, wenn es eine bessere/schnellere Weg-dump, der die Eigenschaften eines Objekts Namen/Werte in eine
Dictionary<string,object>
- Was versuchst du zu erreichen mit diesem? Was auch immer es ist, es muss einen besseren Weg, es zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten alle Eigenschaften eines Objekts, die mit den Werten in eine
Dictionary
können Sie paar die power von Linq to Objects mit Reflexion.Können Sie die Enumerable.ToDictionary Methode:
Diese werden Sie wieder ein
Dictionary<string, object>
.GetProperties(BindingFlags.DeclaredOnly)
.Verwenden Sie die neue collection-Objekt-Initialisierer-syntax anstelle von einen anonymen Typ:
Erkennen ein anonymer Typ ist ein wenig schwer; nicht zuletzt hängt es von der Sprache! VB-anon-Typen nicht gleich Aussehen wie C# anon-Typen. Ich wäre skeptisch, was die Logik ist, dass die Handlungen variieren anders auf anon-Typen. Sie überprüfen könnte für
[CompilerGenerated]
, aber beachten Sie, dass es bedeutet nicht nur "anonyme Typ" - es gibt andere, die dies tun.Persönlich, ich würde nicht unterscheiden, in diesem Szenario.